【ActiveMQ】之安全机制(二)客户端连接安全

 

配置完管控台的安全之后,我们还要配置客户端连接安全,否则大家都可以往MQ上发送消息,这样太危险!

根据官方文档,http://activemq.apache.org/security.html

ActiveMQ配置客户端安全有两种方式,

 

ActiveMQ 4.x及更高版本通过各种不同的提供商提供可插拔的安全性。

最常见的提供者是
JAAS进行身份验证
一个使用简单XML配置文件的默认授权机制。

首先我们看一下简单的XML形式授权机制

直接在conf/activemq.xml里如下配置即可

<plugins>   
    <simpleAuthenticationPlugin>   
        <users>   
            <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>   
        </users>   
   </simpleAuthenticationPlugin>   
</plugins> 

${activemq.username},  ${activemq.password}

引入的是conf/credentials.properties 里面的配置

在客户端连接时候配置响应的用户名,密码即可

 

 

第二种使用JAAS身份认证

首先查看配置文件conf/login.config ,users.properties,groups.properties 三个配置文件

activemq {
    org.apache.activemq.jaas.PropertiesLoginModule required
        org.apache.activemq.jaas.properties.user="users.properties"
        org.apache.activemq.jaas.properties.group="groups.properties";
};

 

 

<plugins>
              <!--  use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
              <jaasAuthenticationPlugin configuration="activemq-domain" />

              <!--  lets configure a destination based authorization mechanism -->
              <authorizationPlugin>
                <map>
                  <authorizationMap>
                    <authorizationEntries>
                      <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
                      <authorizationEntry queue="USERS.>" read="users" write="users" admin="users" />
                      <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
                      
                      <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
                      <authorizationEntry topic="USERS.>" read="users" write="users" admin="users" />
                      <authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
                      
                      <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users,admins" write="guests,users,admins" admin="guests,users,admins"/>
                    </authorizationEntries>
                    
                    <!-- let's assign roles to temporary destinations. comment this entry if we don't want any roles assigned to temp destinations  -->
                    <tempDestinationAuthorizationEntry>  
                      <tempDestinationAuthorizationEntry read="tempDestinationAdmins" write="tempDestinationAdmins" admin="tempDestinationAdmins"/>
                   </tempDestinationAuthorizationEntry>               
                  </authorizationMap>
                </map>
              </authorizationPlugin>
         </plugins>

queue=">"代表所有队列,read="admins" write="admins"  代表admins组账号都可以读写,admin="admins"代表admins组账号可以创建queues,这里需要注意的是configuration=“”的值一定要和login.config里面的一致

 

由users.properties文件可知,admin=admin  用户名和密码都是admin

测试代码如下 

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MqApplication.class)
public class MqTest {

    @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
    
    //发送String消息
    @Test
    public void testStr() {
        try {
            //往luna队列发送消息
            jmsMessagingTemplate.convertAndSend("luna","to luna queue ");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 我们往queue发送队列正常,看着是正确,等等,点击Name查看以下queue内容, 控制台出现以下错误,日志错误如下,这是什么原因呢?

 because Failed with SecurityException: User name [system] or password is invalid.

 

 接着看官方文档,

 

也就是说,默认的username和password还是在credentials.properties,而我们JAAS配置的是admin=admin,怎么办呢?

第一种方式如下,在credentials.properties中新加如下,重启ActiveMQ测试

刷新ActiveMQ管控台正常看到queues数据

第二种方式,不修改credentials.properties,我们在users.properties中加入system=manager

 

在groups.properties中新加

 

 

接着刷新ActiveMQ管控台可以正常看到数据

 

转载于:https://www.cnblogs.com/gyjx2016/p/8573383.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值