您好,登錄后才能下訂單哦!
? ? 一 Token身份驗證概述
? ??Pulsar支持使用基于JSON Web Tokens(RFC-7519)的安全令牌對客戶端進行身份驗證。
? ??Tokens用于標識Pulsar客戶端,并與角色關(guān)聯(lián),這些角色隨后將被授予執(zhí)行某些操作的權(quán)限(例如:發(fā)布或使用某個主題)。
? ? 管理員通常會給客戶端一個令牌字符串用于連接時使用。
? ? JWT支持兩種不同的密鑰來生成和效驗令牌
? ? ? ? ? 1 對稱密鑰
? ? ? ? ? ? ?有一個密鑰用于生成令牌和效驗
? ? ? ? ? 2 非對稱密鑰,有一對密鑰,私鑰和公鑰
? ? ? ? ? ? ?私鑰用于生成令牌
? ? ? ? ? ? ?公鑰用于生成效驗
? ? 二? 驗證 首先成生超級管理員令牌
? ? ? ? ?以下使用 對稱密鑰 例子驗證(Pulsar2.4.2版本)
? ? ?1? 創(chuàng)建密鑰
? ? ? ? $ 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 角色令牌)
? ? ? ??令牌是與用戶關(guān)聯(lián)的憑據(jù),關(guān)聯(lián)是通過角色”來完成的。
? ? ? ? 以下命令是給?test-user 角色生成令牌
? ? ? ? bin/pulsar tokens create --secret-key file:///data/apache-pulsar-2.4.2/my-secret.key \
? ? ? ? ? ? --subject test-user
? ? ? ?執(zhí)行此命令后,屏目上會輸出此角色令牌,記錄此令牌,后邊客戶端配置會用到。
? ? ? ? 假設(shè)生成令牌: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
? ? ? ? ?#超級用戶角色,擁有最高權(quán)限,多個使用逗號隔開
? ? ? ? ?superUserRoles=test-user
? ? ? ? ?brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
brokerClientAuthenticationParameters=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw
? ? ? ? ?4 重新啟動Broker后,此時Broker服務(wù)已啟動Token身份驗證
? ? ? ? ? ? 執(zhí)行$ pulsar-admin tenants list命令會提示沒有權(quán)限。
? ? ? ? ?5 配置client.conf 使用命令行工具有權(quán)限使用
? ? ? ? ? ? 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
? ? ? ? ? ? ? ?假設(shè)計成生的令牌是(eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIxIn0.HHpjQYfqqdUSN_iAw79qjsPqHyPFvscvGUANvjQNEOo)
? ? ? ? ? ? 2 授權(quán)
? ? ? ? ? ? ? ?bin/pulsar-admin namespaces grant-permission my-tenant/my-namespace \
? ? ? ? ? ? ? ?--role test-user1 \
? ? ? ? ? ? ? ?--actions produce,consume
? ? ? ? ? ? 3 JAVA 客戶端驗證,發(fā)送消息或接收消息正常說明成功? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?PulsarClient client = PulsarClient.builder()
? ? ? ? ? ? ? .serviceUrl("pulsar://192.168.1.48:6650/")
? ? ? ? ? ? ? .authentication(? ? ? ? ? ? ? AuthenticationFactory.token("eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIxIn0.HHpjQYfqqdUSN_iAw79qjsPqHyPFvscvGUANvjQNEOo") .build();
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。