ActiveMQ也提供了安全认证,就是用户名密码登录规则。ActiveMQ如果需要使用安全认证,必须在activemq的核心配置文件中开启安全配置,配置文件就是{activemq安装目录}/config/activemq.xml
在conf/activemq.xml配置文件中的broker标签内增加下述内容。
<jaasAuthenticationPlugin configuration="activemq" />指定了使用 JAAS 插件管理权限,至于 configuration="activemq"是在 login.conf 文件里定义的
<authorizationEntry topic="名字" read="用户组名" write="用户组名" admin="用户组名"/>指定了具体的 Topic/Queue 与用户组的授权关系
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins"admin="admins"/>这个是必须的配置
可多个topic或queue设置用户名和密码
<plugins>
<!-- use JAAS to authenticate using the login.config file on the classpath to
configure JAAS -->
<!-- 添加 jaas 认证插件 activemq 在 login.config 里面定义,详细见 login.config-->
<jaasAuthenticationPlugin configuration="activemq" />
<!-- lets configure a destination based authorization mechanism -->
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
<authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
<authorizationEntry queue="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
开启认证后,认证使用的用户信息由其他配置文件提供:conf/login.config
user 代表用户信息配置文件,group 代表用户组信息配置文件。寻址路径为相对当前配置文件所在位置开始寻址。
activemq {
org.apache.activemq.jaas.PropertiesLoginModule required
org.apache.activemq.jaas.properties.user="users.properties"
org.apache.activemq.jaas.properties.group="groups.properties";
};
conf/users.properties
#用户名=密码
admin=admin
conf/groups.properties
#用户组名=用户名,用户名
admins=admin
常见错误:如果用户名不存在,或用户名密码不匹配报错
javax.jms.JMSException: User name [Guest] or password is invalid.