Pulsar Token身份验证
admin
2023-01-23 18:42:36
0

    一 Token身份验证概述

    Pulsar支持使用基于JSON Web Tokens(RFC-7519)的安全令牌对客户端进行身份验证。

    Tokens用于标识Pulsar客户端,并与角色关联,这些角色随后将被授予执行某些操作的权限(例如:发布或使用某个主题)。

    管理员通常会给客户端一个令牌字符串用于连接时使用。

    JWT支持两种不同的密钥来生成和效验令牌

          1 对称密钥

             有一个密钥用于生成令牌和效验

          2 非对称密钥,有一对密钥,私钥和公钥

             私钥用于生成令牌

             公钥用于生成效验

    二  验证 首先成生超级管理员令牌

         以下使用 对称密钥 例子验证(Pulsar2.4.2版本)

     1  创建密钥

        $ bin/pulsar tokens create-secret-key --output my-secret.ke

         生成base64编码的私钥

        $ bin/pulsar tokens create-secret-key --output  /data/apache-pulsar-2.4.2/my-secret.key --base64

     2 生成令牌(注:首先生成 superUserRoles 角色令牌)

        令牌是与用户关联的凭据,关联是通过角色”来完成的。

        以下命令是给 test-user 角色生成令牌

        bin/pulsar tokens create --secret-key file:///data/apache-pulsar-2.4.2/my-secret.key \

            --subject test-user

       执行此命令后,屏目上会输出此角色令牌,记录此令牌,后边客户端配置会用到。

        假设生成令牌:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw

      3 Brokers启用令牌身份验证

         配置broker.conf

         authenticationEnabled=true

         authorizationEnabled=true

         authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken

         tokenSecretKey=file:///data/apache-pulsar-2.4.2/my-secret.key

         #超级用户角色,拥有最高权限,多个使用逗号隔开

         superUserRoles=test-user

         brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken

brokerClientAuthenticationParameters=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw

         4 重新启动Broker后,此时Broker服务已启动Token身份验证

            执行$ pulsar-admin tenants list命令会提示没有权限。

         5 配置client.conf 使用命令行工具有权限使用

            authPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken

            #此处配置的令牌是上边成生的超级管理员令牌

            authParams=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw

         6 重新启动Broker后,命令行工具可以正常使用

         7 java 客户端验证      

              PulsarClient client = PulsarClient.builder()

              .serviceUrl("pulsar://192.168.1.48:6650/")

              .authentication(              AuthenticationFactory.token("eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw") .build();

        三 生成一般用户令牌,给客户端使用

            1 生成一个新角色(test-user1)令牌               

                bin/pulsar tokens create --secret-key file:///data/apache-pulsar-2.4.2/my-secret.key \

                --subject test-user1

               假设计成生的令牌是(eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIxIn0.HHpjQYfqqdUSN_iAw79qjsPqHyPFvscvGUANvjQNEOo)

            2 授权

               bin/pulsar-admin namespaces grant-permission my-tenant/my-namespace \

               --role test-user1 \

               --actions produce,consume

            3 JAVA 客户端验证,发送消息或接收消息正常说明成功               

               PulsarClient client = PulsarClient.builder()

              .serviceUrl("pulsar://192.168.1.48:6650/")

              .authentication(              AuthenticationFactory.token("eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIxIn0.HHpjQYfqqdUSN_iAw79qjsPqHyPFvscvGUANvjQNEOo") .build();


相关内容

热门资讯

探秘沧海之“晶”:海水制盐的原... 自古以来,海就是巨大的宝藏,尤其它那孕育“白色精灵”——食盐的魔力,更是人类文明的基石之一。海水如何...
日媒播出专题片揭露731部队罪... 当地时间21日夜间,日本广播协会播出侵华日军731部队相关专题片,题为《被隐藏的部队:沉默的战后》。...
苏州正式设立人工智能发展办公室 新京报讯 据“苏州发布”微信公众号消息,近日,苏州市正式设立人工智能发展办公室,进一步统筹苏州市人工...
警方通报“16岁高中生被刺死”... 7月22日,内蒙古乌拉特前旗公安局针对“16岁高中生被刺死,事发地疑为涉黄场所”发布警情通报,通报关...
达观数据陈运文:智能体竞争,正... 随着AI智能体加速进入产业应用,市场规模持续增长,但企业关注的重点正在发生变化。 中商产业研究院发布...
磁力混合器突破3D生物打印细胞... 3D生物打印是生物工程领域的重要技术,通过将活细胞混入柔性水凝胶(即"生物墨水")来打印活体组织,广...
王兴兴:做好准备迎接即将突破的... 王兴兴在开幕式上发表演讲。 王兴兴在演讲中提到,宇树科技成立于2016年,经过近10年努力,已经成为...
不排除提告!屡遭苏巧慧阵营抹黑... 海峡导报综合报道 国民党新北市长参选人李四川的板桥房产问题屡遭绿营质疑,对手苏巧慧阵营再度指控李四川...
俄外长:将在马尼拉同鲁比奥会晤... 据凤凰卫视报道,正在菲律宾出席东盟外长会的俄罗斯外长拉夫罗夫7月22日表示,他将于23日上午在马尼拉...
小鸭洗衣机皮带修理方法 小鸭洗衣机皮带在长时间使用过程中,可能会出现磨损或者老化,导致洗衣机无法转动或者转速变慢。这时候,我...