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

验证:

使用错误的用户名密码登录连接,即可看到效果,说明安全认证已经开启

ActiveMQ 安全认证

相关文章: