1. Web 控制檯帳號配置html
打開文件 config\jetty-realm.properties web
在以下信息中配置WEB控制檯管理員帳號、密碼(密碼長度必須大於等於4位)apache
1 # Defines users that can access the web (console, demo, etc.) 2 # username: password [,rolename ...] 3 admin: admin123, admins 4 user: user123, users
2. 認證與受權 - simpleAuthenticationPlugin運維
能夠經過簡單的配置來實現身份認證和對 Topic(或 Queue)的角色受權;ide
身份認證:源碼分析
1 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> 2 <plugins> 3 <simpleAuthenticationPlugin> 4 <users> 5 <authenticationUser username="admin" password="admin1pwd" groups="admins"/> 6 <authenticationUser username="user1" password="user1pwd" groups="users"/> 7 </users> 8 </simpleAuthenticationPlugin> 9 </plugins> 10 </broker>
角色受權:ui
1 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> 2 <plugins> 3 <simpleAuthenticationPlugin> 4 <users> 5 <authenticationUser username="admin" password="admin1pwd" groups="admins"/> 6 <authenticationUser username="user1" password="user1pwd" groups="users"/> 7 </users> 8 </simpleAuthenticationPlugin> 9 10 <authorizationPlugin> 11 <map> 12 <authorizationMap> 13 <authorizationEntries> 14 <authorizationEntry topic=">" read="users" write="users" admin="users, admins"/> 15 16 <!-- 若是沒有配置 topic=">" ,則須要配置如下內容,供監聽; 17 <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests, users" write="guests,users" admin="guests,users"/> 18 --> 19 </authorizationEntries> 20 </authorizationMap> 21 </map> 22 </authorizationPlugin> 23 </plugins> 24 </broker>
小技巧: spa
咱們客戶的一個需求: 全部發布端在發送消息時,容許未攜帶身份(用戶名和密碼)發消息(以下代碼);插件
全部訂閱端則必須攜帶身份(用戶名和密碼)才能訂閱指定的主題消息;debug
1 // 發佈端 2 byte result = Client.Connect("mypubid", null, null, false, 30); 3 4 // 訂閱端 5 byte result = Client.Connect("mysubid", null, null, false, 30);
這裏至關於要知足匿名用戶的訪問,5.4版本以後是容許的,但如何區分 匿名用戶組 和 自定義用戶組呢?
simpleAuthenticationPlugin 認證提供了一個屬性 anonymousAccessAllowed="true",爲用戶提供匿名訪問的機會;
通過對 simpleAuthenticationPlugin 插件源碼分析,其中對名稱爲: anonymous 的用戶組進行了放行;
因而,咱們的配置能夠變動爲以下,來知足需求;
1 <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> 2 <plugins> 3 <simpleAuthenticationPlugin anonymousAccessAllowed="true"> 4 <users> 5 <authenticationUser username="admin" password="admin1pwd" groups="admins"/> 6 <authenticationUser username="user1" password="user1pwd" groups="users"/> 7 </users> 8 </simpleAuthenticationPlugin> 9 10 <authorizationPlugin> 11 <map> 12 <authorizationMap> 13 <authorizationEntries> 14 <authorizationEntry topic="TestTopic" read="users, admins" write="anonymous" admin="users, admins"/> 15 <authorizationEntry topic="ActiveMQ.Advisory.>" read="users, admins" write="anonymous, users, admins" admin="anonymous, users, admins"/> 16 </authorizationEntries> 17 </authorizationMap> 18 </map> 19 </authorizationPlugin> 20 </plugins> 21 </broker>
固然,這須要在 simpleAuthenticationPlugin 認證的場景下才能知足; 這種方式運維起來也很是不方便,在變動用戶、角色、主題及受權策略時,都須要重啓服務;
3. 認證與受權 - jaasAuthenticationPlugin
與 simpleAuthenticationPlugin 認證方式不一樣的是,用戶的管理與受權可經過外部文件來配置,而且不須要重啓服務;
配置上涉及如下三個文件:
A) users.properties : 配置用戶
B) groups.properties:配置用戶組
C) login.config :做爲 jassAuthenticationPlugin 橋接 users 和 groups 的配置以及全局認證相關配置信息;
1) 打開 \Conf\users.properties 文件,配置用戶及密碼(注意:密碼必須大於4位,不然會引起用戶名或密碼無效的錯誤)
## username=password admin=admin user1=pwd123 user2=pwd123
2) 打開 \Conf\groups.properties 文件,配置用戶所屬組織
## groupname=username1,username2 admins=admin,user1 users=user1,user2
3) 打開 \Conf\login.config 文件,橋接配置文件及全局信息
debug=true : 在認證過程發生異常,能夠輸出詳細的異常信息;
reload=true : 在增長用戶(組)或變動用戶(組)及密碼後,刷新內存配置信息(不須要重啓 activemq 服務)
activemq { org.apache.activemq.jaas.PropertiesLoginModule required debug=true reload=true org.apache.activemq.jaas.properties.user="users.properties" org.apache.activemq.jaas.properties.group="groups.properties"; };
4) 打開 \Conf\activemq.xml 文件,配置以下:
鏈接users和groups的語句爲:<jaasAuthenticationPlugin configuration="activemq" />
其中 "activemq" 對應 login.config 中配置的 activemq { ... } 配置塊;
注意: 此認證方式沒法使用 anonymous 身份進行受權;
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> <plugins> <jaasAuthenticationPlugin configuration="activemq" /> <authorizationPlugin> <map> <authorizationMap> <authorizationEntries> <authorizationEntry topic="TestTopic" read="users, admins" write="users, admins" admin="users, admins"/> <authorizationEntry topic="ActiveMQ.Advisory.>" read="users, admins" write="users, admins" admin="users, admins"/> </authorizationEntries> </authorizationMap> </map> </authorizationPlugin> </plugins> </broker>