一 Token身份驗(yàn)證概述
在申扎等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),營銷型網(wǎng)站建設(shè),外貿(mào)網(wǎng)站制作,申扎網(wǎng)站建設(shè)費(fèi)用合理。Pulsar支持使用基于JSON Web Tokens(RFC-7519)的安全令牌對(duì)客戶端進(jìn)行身份驗(yàn)證。
Tokens用于標(biāo)識(shí)Pulsar客戶端,并與角色關(guān)聯(lián),這些角色隨后將被授予執(zhí)行某些操作的權(quán)限(例如:發(fā)布或使用某個(gè)主題)。
管理員通常會(huì)給客戶端一個(gè)令牌字符串用于連接時(shí)使用。
JWT支持兩種不同的密鑰來生成和效驗(yàn)令牌
1 對(duì)稱密鑰
有一個(gè)密鑰用于生成令牌和效驗(yàn)
2 非對(duì)稱密鑰,有一對(duì)密鑰,私鑰和公鑰
私鑰用于生成令牌
公鑰用于生成效驗(yàn)
二? 驗(yàn)證 首先成生超級(jí)管理員令牌
以下使用 對(duì)稱密鑰 例子驗(yàn)證(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í)行此命令后,屏目上會(huì)輸出此角色令牌,記錄此令牌,后邊客戶端配置會(huì)用到。
假設(shè)生成令牌:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw
3?Brokers啟用令牌身份驗(yàn)證
配置broker.conf
authenticationEnabled=true
authorizationEnabled=true
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
tokenSecretKey=file:///data/apache-pulsar-2.4.2/my-secret.key
#超級(jí)用戶角色,擁有高權(quán)限,多個(gè)使用逗號(hào)隔開
superUserRoles=test-user
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
brokerClientAuthenticationParameters=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw
4 重新啟動(dòng)Broker后,此時(shí)Broker服務(wù)已啟動(dòng)Token身份驗(yàn)證
執(zhí)行$ pulsar-admin tenants list命令會(huì)提示沒有權(quán)限。
5 配置client.conf 使用命令行工具有權(quán)限使用
authPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
#此處配置的令牌是上邊成生的超級(jí)管理員令牌
authParams=token:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw
6?重新啟動(dòng)Broker后,命令行工具可以正常使用
7 java 客戶端驗(yàn)證? ? ??
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://192.168.1.48:6650/")
.authentication(? ? ? ? ? ? ? AuthenticationFactory.token("eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIifQ.9OHgE9ZUDeBTZs7nSMEFIuGNEX18FLR3qvy8mqxSxXw") .build();
三 生成一般用戶令牌,給客戶端使用
1 生成一個(gè)新角色(test-user1)令牌? ? ? ? ? ? ? ?
bin/pulsar tokens create --secret-key file:///data/apache-pulsar-2.4.2/my-secret.key \
--subject test-user1
假設(shè)計(jì)成生的令牌是(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 客戶端驗(yàn)證,發(fā)送消息或接收消息正常說明成功? ? ? ? ? ? ? ?
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://192.168.1.48:6650/")
.authentication(? ? ? ? ? ? ? AuthenticationFactory.token("eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0LXVzZXIxIn0.HHpjQYfqqdUSN_iAw79qjsPqHyPFvscvGUANvjQNEOo") .build();
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。