分享

spring用户密码配置-ActiveMQ Security Authentication

 instl 2013-11-25
一、简单的安全认证(使用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  
分享到:  

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多