ActiveMQ安全验证机制

      activemq在默认情况下是没有启用安全验证的机制的,即不需要用户名密码就可以进行activemq broker节点的连接,在这里我们提供了2种使用简单的方式来定义安全机制:

      1.简单认证方式simpleAuthenticationPlugin

      在activemq.xml的broker中配置简单认证的插件及用户。

<plugins>
    <!-- Configure authentication; Username, passwords and groups -->   
    <simpleAuthenticationPlugin>
        <users>
            <authenticationUser username="system" password="manager" groups="users,admins"/>
            <authenticationUser username="user" password="password" groups="users"/>
            <authenticationUser username="guest" password="password" groups="guests"/>
        </users>
    </simpleAuthenticationPlugin>
</plugins>

       在代码中我们就需要用到用户名和密码了

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(username,password,url);

       从5.4开始simpleAuthenticationPlugin也支持匿名访问,用户在不提供用户名和密码的情况下将会产生一个默认的用户名anonymous和分组名anonymous,但是需要开启anonymousAccessAllowed属性,如下

<plugins>
    <!-- Configure authentication; Username, passwords and groups -->   
    <simpleAuthenticationPlugin  anonymousAccessAllowed="true">
        <users>
            <authenticationUser username="system" password="manager" groups="users,admins"/>
            <authenticationUser username="user" password="password" groups="users"/>
            <authenticationUser username="guest" password="password" groups="guests"/>
        </users>
    </simpleAuthenticationPlugin>
</plugins>

       2.JAAS方式

       2.1、在activemq.xml的broker中配置JAAS插件。

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

       如果没有设置系统变量java.security.auth.login.config来指定配置文件路径,那么默认就是使用broker节点配置conf下的login.config文件,上面的配置configuration="activemq" 指定使用 login.config中的"activemq"配置。

      2.2、配置conf/login.config文件

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

      5.11.1之前的版本默认情况时当修改用户权限、分组时都会自动加载,但是5.12开始就会根据reload=true是否设置来进行自动加载。

      2.3、在conf/users.properties中配置用户

#用户名=密码
admin=admin
user=password
guest=guest

       2.4、在conf/groups.properties中配置用户组(角色)

#组名=用户1,用户2     组名自定义
admins=admin
users=admin,user
guests=guest

      我们可以根据不同的用户组来对不同的topic和queue进行相应的权限操作,权限有以下:

     read:有消费和从浏览器网页查看的权限;

     write:发送消息的权限;

     admin:按照自己的需要来创建topic和queue,如果对应的topic或queue不存在。

<broker> 
  .. 
    <plugins> 
      .. 
      <authorizationPlugin> 
        <map> 
          <authorizationMap> 
              <!-- 对Queue/Topic进行用户组授权 -->
            <authorizationEntries> 
              <authorizationEntry queue="TEST.Q" read="users" write="users" admin="users" /> 
              <authorizationEntry topic="ActiveMQ.Advisory.>" read="all" write="all" admin="all"/> 
            </authorizationEntries> 
              <!-- 对临时目标进行访问控制,这个控制是对所有临时目标 -->
            <tempDestinationAuthorizationEntry> 
              <tempDestinationAuthorizationEntry read="admin" write="admin" admin="admin"/> 
            </tempDestinationAuthorizationEntry> 
          </authorizationMap> 
        </map> 
      </authorizationPlugin> 
      .. 
    </plugins> 
  .. 
</broker>

       上面的临时目标其生命周期与创建它的连接的生命周期关联目标:

       1).通过Session的createTemporaryQueue,CreateTemporaryTopic创建临时目标;

        2).临时目标的生命周期是创建它的Connection关联,如果关闭了创建此临时目标的Connection,那么临时目标被关闭,内容也将消失;

       3).只有创建它的Connection所创建的session才能从临时目标中接收消息;不过任何的生产者都可以向临时目标中发送消息;

      更多的信息我们可以参考官网https://activemq.apache.org/security

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值