• 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

  • 相关阅读:
    ASP.NET Core 静态资源的打包与压缩
    算法
    字符串反转
    js 获取随机数
    AspNetCore MVC 跨域
    add digits
    1-bit and 2-bit Characters
    删除字符串中出现次数最少的字符
    洗牌
    哈夫曼编码
  • 原文地址:https://www.cnblogs.com/LuisYang/p/6007716.html
Copyright © 2020-2023  润新知