码迷,mamicode.com
首页 > 其他好文 > 详细

ActiveMQ Part 5 : 认证与授权

时间:2017-10-31 21:34:56      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:splay   alt   class   close   one   方式   管理员   自定义   dir   

1.  Web 控制台账号配置

     打开文件 config\jetty-realm.properties 

     在如下信息中配置WEB控制台管理员账号、密码(密码长度必须大于等于4位)

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)的角色授权;

     身份认证:

技术分享
 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>
View Code

     角色授权:

技术分享
 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>
View Code

     小技巧: 

     我们客户的一个需求: 所有发布端在发送消息时,对未携带用户名和密码(如下代码)的也可以发消息;

                所有订阅端必须携带用户名和密码才能订阅指定的主题消息;

技术分享
1 // 发布端
2 byte result = Client.Connect("mypubid", null, null, false, 30);
3 
4 // 订阅端
5 byte result = Client.Connect("mysubid", null, null, false, 30);
View Code

     这里相当于要满足匿名用户的访问,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="users, admins" admin="users, admins"/>
16           </authorizationEntries>
17         </authorizationMap>
18       </map>
19     </authorizationPlugin>
20   </plugins>
21 </broker>
View Code

     当然,这需要在 simpleAuthenticationPlugin 认证的场景下才能满足; 这种方式运维起来也非常不方便,在变更用户、角色、主题及授权策略时,都需要重启服务;

 

3.  认证与授权 - jassAuthenticationPlugin

 

ActiveMQ Part 5 : 认证与授权

标签:splay   alt   class   close   one   方式   管理员   自定义   dir   

原文地址:http://www.cnblogs.com/sunpoin/p/7763637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!