A3·ActiveMQ密码配置(JAAS)及问题

版权声明:转载声明地址即可 https://blog.csdn.net/lycz_tpself/article/details/81162772

本文讲述ActiveMQ使用JAAS方式配置用户名密码的步骤及出现的问题

  • 步骤

打开ActiveMQ安装目录的conf文件夹,本文涉及到的文件如下图所示

一、login.config文件

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

二、users.properties文件(等号左边是用户名,右边是密码)

amqsys=login
amquser=key

三、groups.properties文件(等号左边是用户组名,右边是用户名,多个用户名以逗号隔开,与users文件中的用户名对应)

admins=amqsys
users=amquser

四、activemq.xml文件,在</broker>标签上方加入以下代码,代码第二行的configuration对应着login.config文件中的名称,authorizationEntry中,queue或topic属性是通道名称,read指定可以读取的用户组,write指定可以写入的用户组,admin指定可以创建通道的用户组。

<!-- 采用JAAS的管理机制来配置各种角色的权限 -->  
<plugins>  
    <jaasAuthenticationPlugin configuration="activemq" />
    <authorizationPlugin>  
        <map>  
            <authorizationMap>  
                <authorizationEntries>  
                    <authorizationEntry queue="spittle.alert.queue" read="admins,users" write="admins" admin="admins,users"/>
                    <authorizationEntry queue="online.exam.queue" read="admins,users" write="admins" admin="admins,users"/>

                     <!-- 表示通配符,例如USERS.>表示以USERS.开头的主题,>表示所有主题,read表示读的权限,write表示写的权限,admin表示角色组 -->  
                    <authorizationEntry topic="ActiveMQ.Advisory.>" read="admins,users"     write="admins" admin="admins,users"/>  
                    <authorizationEntry topic="online.exam.topic" read="admins,users" write="admins" admin="admins,users"/>  
                    <authorizationEntry topic="biz1.topic" read="admins,users" write="admins" admin="admins,users"/>
                </authorizationEntries>  
            </authorizationMap>  
        </map>  
    </authorizationPlugin>  
</plugins>  

 其中topic为ActiveMQ.Advisory.>的不能删除,即以下代码

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

通过以上的配置,基本的密码设置已经完成了,以spring为例,在创建连接工厂时将用户名密码置入

<amq:connectionFactory id="amqConnectionFactory" brokerURL="tcp://localhost:61616" userName="sys" password="login"/>

五、 登录控制台127.0.0.1:8161的密码也可以修改,文件是jetty-realm.properties

sysamq: login, admin
  • 问题

配置完成之后,能完美支持后端操作,但控制台操作会发生异常(已解决),ajax方式因为找不到置入用户名密码的地方也不能使用(未解决)。

一、解决控制台不能发送消息到通道的方法是修改credentials.properties文件,将其中的activemq.username和activemq.password改为users.properties中存在的用户名和密码

activemq.username=amqsys
activemq.password=login
guest.password=login

 二、ajax初始化的init方法中未发现配置用户名密码的地方,未解决,欢迎大神指导

猜你喜欢

转载自blog.csdn.net/lycz_tpself/article/details/81162772