分享

ActiveMQ Security Authentication - 一切随风 - ItE...

 wangxq 2011-04-06

ActiveMQ Security Authentication

文章分类:Java编程
一、简单的安全认证(使用SimpleAuthenticationPlugin)
(1)设置证书文件,放用户名和密码:${activemq.base}/conf/credentials.properties
Html代码 复制代码 收藏代码
  1. activemq.username=logcd  
  2. activemq.password=028cd  

(2)配置simpleAuthenticationPlugin,简单认证插件
Xml代码 复制代码 收藏代码
  1. <!--加载属性配置文件-->  
  2.   <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  3.      <property name="locations">  
  4.         <value>file:///${activemq.base}/conf/credentials.properties</value>  
  5.      </property>         
  6.   </bean>  

Xml代码 复制代码 收藏代码
  1. <!--在Broker中,配置插件-->  
  2.     <plugins>    
  3.         <simpleAuthenticationPlugin>    
  4.             <users>    
  5.                 <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>    
  6.             </users>    
  7.         </simpleAuthenticationPlugin>    
  8.     </plugins>   

(3)在connectionFactory中,使用用户名和密码。
Java代码 复制代码 收藏代码
  1. ConnectionFactory cf = new ActiveMQConnectionFactory("logcd""028cd""tcp://195.2.199.169:61616")   

Xml代码 复制代码 收藏代码
  1. <bean id="queueConnectionFactory"  
  2.         class="org.apache.activemq.spring.ActiveMQConnectionFactory" >  
  3.         <property name="brokerURL" value="tcp://195.2.199.169:61616" />  
  4.         <property name="userName" value="logcd" />    
  5.         <property name="password" value="028cd" />    
  6.         <property name="useAsyncSend" value="true"/>  
  7. </bean>  

二、ActiveMQ Web Console Security
   ActiveMQ缺省的管理是通过内置的jetty服务器,只要在浏览器中输入http://[IP]:8161/admin,不需要登录,就可以对队列、主题及消息等进行管理,这很不安全。那么要解决管理控制台的安全性,除了通过修改管理端口号以及应用名称之外,最关键的也是需要进行配置,必须通过身份认证才能登录。
(1)认证信息文件:realm.properties(${activemq.base}/conf/realm.properties)
Html代码 复制代码 收藏代码
  1. #admin/test   
  2. admin: MD5:098f6bcd4621d373cade4e832627b4f6,user,admin  

(2)将jetty-plus-6.1.9.jar加入到${activemq.base}/lib/web中
(3)login.config(${activemq.base}/webapps/admin/login.config)
Xml代码 复制代码 收藏代码
  1. adminLoginModule {    
  2.       org.mortbay.jetty.plus.jaas.spi.PropertyFileLoginModule required    
  3.       debug="true"    
  4.       file="${activemq.base}/conf/realm.properties";    
  5. };  

(4)在activemq.xml中的jetty配置部分增加userRealms
Xml代码 复制代码 收藏代码
  1. <userRealms>  
  2.    <jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule">  
  3.    </jaasUserRealm>  
  4. </userRealms>  

(5)在${activemq.base}/webapps/admin/WEB-INF/web.xml文件里添加
Xml代码 复制代码 收藏代码
  1. <security-constraint>  
  2.  <web-resource-collection>  
  3.  <web-resource-name>adminRealm</web-resource-name>  
  4.    <url-pattern>/*</url-pattern>  
  5.    </web-resource-collection>  
  6.    <auth-constraint>  
  7.      <role-name>admin</role-name>  
  8.      <role-name>user</role-name>  
  9.    </auth-constraint>  
  10. </security-constraint>  
  11. <login-config>  
  12.   <auth-method>BASIC</auth-method>  
  13.   <realm-name>adminRealm</realm-name>  
  14. </login-config>  

(6)通过设置java.security.auth.login.config系统属性来配置login modules的配置文件。${activemq.base}/bin/activemq.bat中的ACTIVEMQ_OPTS增加参数
Java代码 复制代码 收藏代码
  1. -Djava.security.auth.login.config="D:/activemq-5.1/webapps/admin/login.config"  

问题:使用时一直报个警告信息,还不知道如何解决
WARN  log  - No CallbackHandler configured: using DefaultCallbackHandler
三、ActiveMQ5.3.0中的配置(conf下有各种配置样例)
Xml代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.   xmlns="http://www./schema/beans"  
  4.   xmlns:amq="http://activemq./schema/core"  
  5.   xmlns:xsi="http://www./2001/XMLSchema-instance"  
  6.   xsi:schemaLocation="http://www./schema/beans http://www./schema/beans/spring-beans-2.0.xsd   
  7.   http://activemq./schema/core http://activemq./schema/core/activemq-core.xsd">  
  8.      
  9.   <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  10.       <property name="locations">  
  11.           <value>file:${activemq.base}/conf/credentials.properties</value>  
  12.       </property>         
  13.   </bean>  
  14.   
  15.   <broker useJmx="true" persistent="false" xmlns="http://activemq./schema/core">  
  16.   
  17.     <plugins>  
  18.         <!-- Configure authentication; Username, passwords and groups -->  
  19.         <simpleAuthenticationPlugin>  
  20.             <users>  
  21.                 <authenticationUser username="system" password="manager"  
  22.                     groups="users,admins"/>  
  23.                 <authenticationUser username="user" password="password"  
  24.                     groups="users"/>  
  25.                 <authenticationUser username="guest" password="password" groups="guests"/>  
  26.             </users>  
  27.         </simpleAuthenticationPlugin>  
  28.   
  29.   
  30.       <!--  Lets configure a destination based authorization mechanism -->  
  31.       <authorizationPlugin>  
  32.         <map>  
  33.           <authorizationMap>  
  34.             <authorizationEntries>  
  35.               <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />  
  36.               <authorizationEntry queue="USERS.>" read="users" write="users" admin="users" />  
  37.               <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users" />  
  38.                  
  39.               <authorizationEntry queue="TEST.Q" read="guests" write="guests" />  
  40.                  
  41.               <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />  
  42.               <authorizationEntry topic="USERS.>" read="users" write="users" admin="users" />  
  43.               <authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users" />  
  44.                  
  45.               <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/>  
  46.             </authorizationEntries>  
  47.           </authorizationMap>  
  48.         </map>  
  49.       </authorizationPlugin>  
  50.     </plugins>  
  51.        
  52.     <persistenceAdapter>  
  53.        <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#oracle-ds"/>  
  54.     </persistenceAdapter>  
  55.   
  56.     <transportConnectors>  
  57.        <transportConnector name="myQueue" uri="tcp://195.2.199.169:61616"/>  
  58.        <transportConnector name="myTopic" uri="tcp://195.2.199.169:61617"/>  
  59.     </transportConnectors>  
  60.        
  61.   </broker>  
  62.   
  63.   <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  64.     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>  
  65.     <property name="url" value="jdbc:oracle:thin:@195.2.199.6:1521:orcl"/>  
  66.     <property name="username" value="activemq"/>  
  67.     <property name="password" value="activemq"/>  
  68.     <property name="maxActive" value="200"/>  
  69.     <property name="poolPreparedStatements" value="true"/>  
  70.   </bean>  
  71.   
  72.   <!--    
  73.       Configure command agent to be used in secured broker environment   
  74.       Notice how we used ${activemq.username} and ${activemq.password} configured in credential.properties   
  75.   -->  
  76.   <commandAgent xmlns="http://activemq./schema/core" brokerUrl="vm://localhost" username="${activemq.username}" password="${activemq.password}"/>  
  77.   
  78.   <!-- Use Web applications and Camel in secured broker environment -->  
  79.   <import resource="jetty.xml"/>  
  80.   <import resource="camel.xml"/>  
  81.   
  82. </beans>  

credentials.properties:
Html代码 复制代码 收藏代码
  1. activemq.username=system  
  2. activemq.password=manager  
评论
7 楼 seemoon 2010-07-29   引用
for 5.3.2版本,look
http://www./activemq/securing-activemq-531-console.html
6 楼 lddzmy 2010-06-28   引用
,知道了。
5 楼 log_cd 2010-06-28   引用
lddzmy 写道
你好,下面这个要加在哪里啊,具体一点。
<userRealms> 
   <jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule"> 
   </jaasUserRealm> 
</userRealms>

Xml代码 复制代码 收藏代码
  1. <jetty xmlns="http:///schemas/jetty/1.0">  
  2.     <connectors>  
  3.         <nioConnector port="8161"/>  
  4.     </connectors>  
  5.   
  6.     <handlers>  
  7.         <webAppContext contextPath="/admin" resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true"/>  
  8.         <webAppContext contextPath="/demo" resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true"/>  
  9.         <webAppContext contextPath="/fileserver" resourceBase="${activemq.base}/webapps/fileserver" logUrlOnStart="true"/>  
  10.     </handlers>  
  11.   
  12.     <userRealms>  
  13. <jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule">  
  14. </jaasUserRealm>  
  15.     </userRealms>  
  16.   
  17. </jetty>  
4 楼 lddzmy 2010-06-28   引用
你好,下面这个要加在哪里啊,具体一点。
<userRealms> 
   <jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule"> 
   </jaasUserRealm> 
</userRealms>
3 楼 lddzmy 2010-06-28   引用
<userRealms> 
   <jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule"> 
   </jaasUserRealm> 
</userRealms> 
2 楼 log_cd 2010-04-15   引用
,谢谢指点,改天试下!
1 楼 jbas 2010-04-15   引用
>>问题:使用时一直报个警告信息,还不知道如何解决
>>WARN  log  - No CallbackHandler configured: using >>DefaultCallbackHandler

你可以在jaasUserRealm 中加入 callbackHandlerClass="org.mortbay.jetty.plus.jaas.callback.DefaultCallbackHandler" ,这样就不会报Warn了。

详细如下:

Java代码 复制代码 收藏代码
  1. <jetty xmlns="http:///schemas/jetty/1.0">   
  2.   <connectors>   
  3.     <nioConnector port="8161" />   
  4.   </connectors>   
  5.   <handlers>   
  6.     <webAppContext contextPath="/admin"  
  7.      resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true" />   
  8.   </handlers>   
  9.   <userRealms>   
  10.      <jaasUserRealm name="adminRealm3" loginModuleName="adminLoginModule" callbackHandlerClass="org.mortbay.jetty.plus.jaas.callback.DefaultCallbackHandler" />   
  11.   </userRealms>   
  12. </jetty>  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多