溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Pulsar Token身份驗證

發(fā)布時間:2020-08-07 23:23:58 來源:網(wǎng)絡(luò) 閱讀:428 作者:qq5dc264c690eab 欄目:大數(shù)據(jù)

? ? 一 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();


向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI