`
paladin1988
  • 浏览: 319871 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】AMQ安全校验及AMQ Console安全认证

    博客分类:
  • JMS
 
阅读更多

 

 

来源:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/ActiveMQ/page/AMQ%E5%AE%89%E5%85%A8%E6%A0%A1%E9%AA%8C%E5%8F%8AAMQ%20Console%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81

 

作者:蝎子喝茶

 

 

AMQ的校验涉及到AMQ Broker和AMQ Console两个部分;
对于AMQ Broker需要添加连接校验机制。AMQ Console部署在嵌入式的Jetty上,因此可以使用BASIC认证。

 


 


一. 对AMQ Broker添加校验需要在broker中添加<plugins></plugins>,一下所有操作均需要设置在plugins中。

 


 

1. 进行用户组授权配置

 

<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=">" read="admins,users,guests" write="admins,users" admin="admins" />
<authorizationEntry topic=">" read="admins,users,guests" write="admins,users" admin="admins" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>

 

">"为通配符,代表任何消息,被赋予admin操作的用户组具有创建消息队列的权限。
 

 


 

2.1. 使用简单的用户设置策略

 

<simpleAuthenticationPlugin>
<users>
<authenticationUser username="system" password="manager" groups="users,admins"/>
<authenticationUser username="user" password="password" groups="users"/>
<authenticationUser username="guest" password="password" groups="guests"/>
</users>
</simpleAuthenticationPlugin> 

 

 


 

2.2. 使用基于JAAS的认证策略

 


 

2.2.1). 配置使用JAAS策略,并定义配置模块为activemq-domain.

<jaasAuthenticationPlugin configuration="activemq-domain" />

 

 


 

2.2.2). 在conf目录中创建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";
};

  

 


 

2.2.3). 建立groups.properties配置用户组和用户

# 组名=用户名
admins=system
users=system,user
guests=guest

 

 


 

2.2.4). 建立users.properties配置用户和密码

 

# 用户名=密码
system=manager
user=password
guest=password

 

 


 

3. 设置broker连接密码

 


 

3.1). 加载证书配置文件

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>file:///${activemq.base}/conf/credentials.properties</value>
</property>
</bean>

  

 


 

3.2). 设置证书credentials.properties用户密码

# 键=值
activemq.username=system
activemq.password=manager

  

 


 

3.3). 设置broker连接用户密码

 

<networkConnectors>
<networkConnector name="host" userName="${activemq.username}" password="${activemq.password}" uri="static://(tcp://localhost:61616)"/>
</networkConnectors>

 

 


 

二. 对AMQ Console添加BASIC认证

 


 

1. 可以将jetty的配置独立成单独的文件,然后在activemq.xml进行引用

<import resource="jetty.xml"/>

  

 


 

2.1. 在jetty.xml添加BASIC认证

<bean id="userRealm" class="org.mortbay.jetty.security.HashUserRealm">
<property name="name" value="BPMCSecurity"/> <!-- 认证名 -->
<property name="config" value="${activemq.base}/conf/jetty-realm.properties"/> <!-- 认证用户密码配置 -->
</bean>
<bean id="securityConstraint" class="org.mortbay.jetty.security.Constraint">
<property name="name" value="BASIC" /> <!-- 认证方式,采用BASIC认证 -->
<property name="roles">
<list>
<value>admins</value> <!-- 授权角色:admins -->
</list>
</property>
<property name="authenticate" value="true"/>
</bean>
<bean id="securityConstraintMapping" class="org.mortbay.jetty.security.ConstraintMapping">
<property name="constraint" ref="securityConstraint"/>
<property name="pathSpec" value="/*"/>
</bean>
<!-- 配置handler -->
<bean id="securityHandler" class="org.mortbay.jetty.security.SecurityHandler">
<property name="userRealm" ref="userRealm"/>
<property name="constraintMappings">
<list>
<ref bean="securityConstraintMapping" />
</list>
</property>
</bean>

 

 


 

2.2. 添加handler
在Server bean的handler属性中设置HandlerCollection,并添加handlers list中内容

<list>
<ref bean="securityHandler" />
</list>

  

 


2.3. 添加配置文件jetty-realm.properties

 

# 格式(用户名:密码,用户组)
system: manager,admins

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics