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>