版权声明:转载声明地址即可 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方法中未发现配置用户名密码的地方,未解决,欢迎大神指导