前言
本章学习ActiveMQ安全认证的相关知识
方法
1.概念
我们知道,之前我们讲解了PTP模式以及PS模式,其中有这样一段代码:
该处是创建工厂对象的额时候需要填写的三个参数。用户名,密码以及连接地址。
我们所书写的用户名和密码是ActiveMQ中默认拥有的用户名和密码,但是你不妨这样试一下:
如果你将密码改为3,或者你将用户名改成别的,也就是说无论你是什么用户名密码都可以连接ActiveMQ。
面对如此不安全的情况,ActiveMQ为我们提供了相关的安全认证功能。
2.配置ActiveMQ的安全认证
1)我们找到conf目录下的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>
<jaasAuthenticationPlugin configuration="activemq" />指定了使用JAAS插件管理权限,至于configuration="activemq"是在login.conf文件里定义的
<authorizationEntry queue=">" read="admins" write="admins" admin="admins" />指定了具体的Topic/Queue与用户组的授权关系
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>这个是必须的配置,不能少
2)我们看一下login.config的内容
这里显示我们的MQ用户配置在users.properties,用户组的配置在groups.properties,我们分别打开这两个文件看一下:
首先是users.properties
其中只有默认的配置,也就是我们的用户名=密码,如果需要添加其他自定义的用户名和密码,回车继续添加即可。
然后看一下用户组groups.properties
这里指明了admins用户组所拥有的用户。如果需要添加更多用户只要——用户组=用户名,用户名,...即可
而我们之前的配置文件添加的认证插件恰好说明了admins用户组的用户需要权限验证,包括PTP模式和PS模式。
我们只需要重新启动MQ即可。
3.验证使用错误的用户名和密码是否可以发送消息
使用上述用户名和密码发送消息,运行结果如下所示:
这说明我们的安全认证添加成功,使得MQ更加的安全。