首先講Web控制檯的安全性。
ActiveMQ默認使用Jetty作爲內嵌的Web服務器。當然,你也可以把ActiveMQ的部署到Tomcat、JBoss等其他服務器中。在這裏,我們採用默認內嵌的Jetty,並使用JAAS來實現安全控制。
1、把 jetty-plus-6.1.9.jar 放到 ${activemq.base}/lib/web/中。如果你手上沒有jetty-plus-6.1.9.jar文件,可以從Jetty的官方網站下載,下載Jetty6.1.9版本,解壓後,在lib裏可以找到該文件。
2、在${activemq.base}/conf/jetty.xml裏,加上這麼一段:
<userRealms>
<jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule" />
</userRealms>
3、在${activemq.base}/conf/目錄下新建一個login.config文件,內容如下:
adminLoginModule {
org.mortbay.jetty.plus.jaas.spi.PropertyFileLoginModule required
debug="true"
file="${activemq.base}/conf/login.properties";
};
4、在${activemq.base}/conf/目錄下新建一個login.properties文件,內容如下:
myusername:mypassword,admins
該文件的格式是:用戶名:密碼,角色
5、在${activemq.base}/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>
6、最後,修改${activemq.base}/bin/activemq文件,把配置文件添加到環境變量。把ACTIVEMQ_OPTS修改爲:
ACTIVEMQ_OPTS="$ACTIVEMQ_OPTS $SUNJMX $SSL_OPTS -Djava.security.auth.login.config=${ACTIVEMQ_BASE}/conf/login.config"
配置完畢。重啓ActiveMQ,在瀏覽器裏打開http://localhost:8161/admin,就會彈出一個對話框,要求輸入用戶名和密碼。