消息中間件activemq-5.14.1安全驗證配置


activemq分為控制端和客戶端,下面分別介紹安全認證配置方法。

1.控制端安全配置

(1). ActiveMQ目錄conf下找到jetty.xml:

<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
    <property name="name" value="BASIC" />
    <property name="roles" value="user,admin" />
    <!-- set authenticate=false to disable login -->
    <property name="authenticate" value="true" />
</bean>

含義:

<property name="authenticate" value="true" />      true:需要認證; false:不需要認證

(2). ActiveMQ目錄conf下找到jetty-realm.properties

 

# username: password [,rolename ...]
admin: admin123, admin
user: user, user

說明:

第一個admin,為認證用戶名。 
第二個admin123,為認證密碼。 
第三個admin,為角色。


(3).  重啟ActiveMQ驗證是否需要認證
重啟activemq后,訪問:http://127.0.0.1:8161/admin/,彈出http基本認證框,這時候認證生效。

 

1.客戶端安全配置

(1). 解壓目錄/conf/activemq.xml的broken中添加:

        <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="FirstTopic" read="smeall,smeadmin" write="smeadmin" admin="smeall,smeadmin" /--> <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>
1. <jaasAuthenticationPlugin configuration="activemq" /> 指定了使用JAAS插件管理權限, 至於configuration="activemq"是在login.conf文件里定義的
2.<authorizationEntry topic="FirstTopic" read="smeall,smeadmin" write="smeadmin" admin="smeall,smeadmin" /> 指定了具體的Topic/Queue與用戶組的授權關系
3. <authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/> 這個是必須的配置,不能少
備注:上述2中指定了用戶組和 隊列和主題 之間的授權關系。 一開始我以為是授權用戶組與管道之間的關系后來發現錯了的,是授權用戶組與隊列的關系。那么對於剛接觸activemq的小白來說,你還不知道消息隊列和主題都是通過管理URL進行添加刪除的。

若是集群則broken中繼續添加:

        <networkConnectors>
            <networkConnector userName="用戶名" password="密碼" uri="static:(tcp://localhost:61616)" duplex="true"/>
        </networkConnectors>

 此配置可以忽略掉

(2). 解壓目錄/conf/login.config中:

 activemq{
    org.apache.activemq.jaas.PropertiesLoginModule required
    debug=true
    org.apache.activemq.jaas.properties.user="users.properties" 
    org.apache.activemq.jaas.properties.group="groups.properties";
};

(3). 解壓目錄/conf/groups.properties中:

admins=用戶名

(4). 解壓目錄/conf/users.properties中:

用戶名=密碼

 

 

三。其他配置說明

除了安全驗證的配置需要我們理解,還有一部分配置需要理解:

        <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://10.8.0.1:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://10.8.0.1:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://10.8.0.1:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://10.8.0.1:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://10.8.0.1:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

上述中的

name="openwire" uri="tcp://10.8.0.1:61616?ma

name="amqp" uri="amqp://10.8.0.1:5672?max
其中 tcp:// 和 amqp:// 這都是指協議,而name是隨意定義的,但是這個name是在管理url界面中顯示的,如圖:

 
        
# cat /etc/hosts
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 quanli_dev02.fistforward.com
10.8.0.1 quanli_dev02.fistforward.com
# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
PEERNTP=no
GATEWAY=10.8.3.253
HOSTNAME=quanli_dev02.fistforward.com

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM