ActiveMQ提供安全认证。即用户名密码登录规则。如果需要使用安全认证的话,则必须在activemq的核心配置文件conf目录下的activemq.xml文件中开启安全配置。
在activemq.xml配置文件的broker标签中增加下述内容。
<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>
说明:
#指定了使用JAAS插件管理权限,至于configuration="activemq"是在login.conf文件里定义的
<jaasAuthenticationPlugin configuration="activemq" />
#指定具体的Topic/Queue与用户组的授权关系
<authorizationEntry topic="名字" read="用户组名" write="用户组名" admin="用户组名" />
#这个是必须的配置,不能少
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
开启认证后,认证使用的用户信息由其他配置文件login.config提供。
activemq {
org.apache.activemq.jaas.PropertiesLoginModule required
org.apache.activemq.jaas.properties.user="users.properties"
org.apache.activemq.jaas.properties.group="groups.properties";
};
user代表用户信息配置文件,group代表用户组信息配置文件。寻址路径为相对当前配置文件所在位置开始寻址。
users.properties
#用户名=密码
admin=admin
groups.properties
#用户组名=用户名1,用户名2
admins=admin
修改好配置后,重启activeMQ
验证:
使用错误的用户名密码登录连接,即可看到效果,说明安全认证已经开启