ActiveMQ 5.2的安全性配置

最近在研究activeMQ,在按照官網的例子和一些資料寫了些小實例,並打算用它來進行發送郵件使用,使用的過程中涉及到了安全性的問題,我本是用的最新版本activemq 5.3.2但是按照官網的資料,對這個版本的安全性配置提及很少,倒是沒有出來的版本5.4.0裏面的配置涉及到了,下載了一個5.4.0後發現果然配置起來相當簡單。但是考慮到其還未發佈,因此我對低一點版本的5.2.0進行了一個配置.

下文爲ActiveMQ5.2配置的過程。
參考:http://activemq.apache.org/security.html


一、JMS服務安全性

1.打開activemq.xml,在<broker></broker>中增加

<plugins>
<!-- use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
<jaasAuthenticationPlugin configuration="activemq-domain" />

<!-- lets configure a destination based authorization mechanism -->
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
<authorizationEntry queue="USERS.>" read="users" write="users" admin="users" />
<authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users" />

<authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
<authorizationEntry topic="USERS.>" read="users" write="users" admin="users" />
<authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users" />

<authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/>
</authorizationEntries>

</authorizationMap>
</map>
</authorizationPlugin>
</plugins>


2.在conf目錄下增加 login.config、groups.properties、users.properties
login.config文件 內容如下:

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

groups.properties文件 內容如下:
admins=system

users.properties文件 內容如下:
system=manager

添加用戶在users.properties文件下,group.properties爲用戶分組使用。
做好了如上的設置以後,程序再訪問activeMQ的話就需要使用用戶名和密碼了。


二、管理控制檯安全性

ActiveMQ缺省的管理是通過內置的jetty服務器,只要在瀏覽器中輸入http://localhost:8161/admin,不需要登錄,就可以對隊列、主題及消息等進行管理,可以想象這非常不安全。
那麼要解決管理控制檯的安全性,除了通過修改管理端口號以及應用名稱之外,最關鍵的也是需要進行配置,必須通過身份認證才能登錄。
本文要說的方式主要是在不改變內置jetty的方式下,通過配置基本認證的方式來實現安全登錄。


1.在activemq.xml中找到 <jetty xmlns="http://mortbay.com/schemas/jetty/1.0">,增加realm設置
<userRealms>
<jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule">
</jaasUserRealm>
</userRealms>



2.在login.config增加如下配置:

adminLoginModule {
org.mortbay.jetty.plus.jaas.spi.PropertyFileLoginModule required
debug="true"
file="${activemq.base}/conf/realm.properties";
};


3.在conf中增加realm.properties文件,內容如下:
# 用戶名:密碼,角色
system:MD5:1d0258c2440a8d19e716292b231e3190,admins


4.把 jetty-plus-6.1.9.jar 放到 ${activemq.base}/lib/web/中

5.通過命令:java -cp jetty-6.1.9.jar;jetty-util-6.1.9.jar org.mortbay.jetty.security.Password system manager 可以修改密碼的md5

6.打開webapps/admin/WEB-INF/web.xml,增加如下配置:

<security-constraint>
<web-resource-collection>
<web-resource-name>adminRealm</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admins</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>adminRealm</realm-name>
</login-config>

7.修改${activemq.base}/bin/activemq文件 找到ACTIVEMQ_OPTS,在後面追加:
%ACTIVEMQ_OPTS% %SUNJMX% %SSL_OPTS% -Djava.security.auth.login.config=%ACTIVEMQ_BASE%/conf/login.config

配置完成後,當訪問http://localhost:8161/admin/時,將會彈出窗口以讓用戶輸入登錄帳號和密碼。


期待5.4.0的發佈,按照我下載的5.4.0,其配置遠遠簡單了,只要修改jetty.xml的一個
<property name="authenticate" value="true" />
即可,很簡單http://activemq.apache.org/web-console.html上有介紹。 不過鬱悶的是5.3.2沒配置出來。
發佈了41 篇原創文章 · 獲贊 0 · 訪問量 2696
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章