Activemq去除认证

0.背景介绍

 

  由于项目安全性的约束,不能在配置文件中暴露一些密码信息。

    默认情况下,ActiveMQ在进行接发消息的时候会用户认证。通过ActiveMQ-client初始化ActiveMQConnectionFactory的时候,我们会将用户名和密码暴露在配置文件中。如果对密码进行加密,在程序启动的时候进行解密。有可能存在一点代码量上的改造,【临近上线,这个方案暂时被PASS】。

  想通过ActiveMQ服务端去除认证,解决如上所述问题。

 

1.去除认证

 

    修改ActiveMQ服务端的配置文件。($ActiveMQ_dir/conf/activemq.xml)

    在<plugins>节点中注释下列认证方式:

      <!--  <jaasAuthenticationPlugin configuration="activemq" />  -->

    在<plugins>节点中添加下列认证方式:

      <simpleAuthenticationPlugin anonymousAccessAllowed=“true”> 

                <users> 

                    <authenticationUser username="admin" password="manager" 

                        groups="users,admins"/> 

                </users> 

          </simpleAuthenticationPlugin> 

        <!--  Lets configure a destination based authorization mechanism --> 

         <authorizationPlugin> 

            <map> 

              <authorizationMap> 

                  <authorizationEntries> 

                      <authorizationEntry queue=">" read="admins,anonymous" write="admins,anonymous" admin="admins,anonymous" /> 

                      <authorizationEntry topic=">" read="admins,anonymous" write="admins,anonymous" admin="admins,anonymous" /> 

                      <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users,anonymous" write="guests,users,anonymous" admin="guests,users,anonymous"/> 

                  </authorizationEntries> 

              </authorizationMap> 

            </map> 

        </authorizationPlugin>

 

         上面配置即是通过认证插件,在接发Query/Topic/ ActiveMQ.Advisory的时候支持匿名用户。

 

2.测试

 

  带用户名/密码的配置:

  <bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">

          <constructor-arg index="0" value="${jms.broker.username}"/>

          <constructor-arg index="1" value="${jms.broker.password}"/>

          <constructor-arg index="2" value="${jms.broker.url}"/>

          <property name="useAsyncSend" value="true"/>

     </bean>

 

  不带用户名/密码的配置:

  <bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">

          <constructor-arg index="0" value="${jms.broker.url}"/>

          <property name="useAsyncSend" value="true"/>

    </bean>

 

  实现结果:修改服务端的配置,客户端去除认证配置。对收发消息无影响。

 

3.资料参考

  ActiveMQ Security:

  http://activemq.apache.org/security.html

 

posted on 2016-10-28 14:28  Luis、Yang、  阅读(289)  评论(0编辑  收藏  举报

导航