`
paladin1988
  • 浏览: 328971 次
  • 性别: 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

 

 

分享到:
评论

相关推荐

    java通过AMQ通讯

    Java通过AMQ通讯是一种在分布式系统中实现消息传递的技术,主要使用了Apache ActiveMQ(简称AMQ)这一开源的消息中间件。AMQ是基于Java Message Service(JMS)规范的,它提供了一种高效、可靠的平台,使得应用程序...

    AMQ 实现消息队列 基本DEMO

    AMQ(ActiveMQ)是Apache软件基金会开发的一款开源消息中间件,它实现了多种消息协议,如OpenWire、STOMP、XMPP、AMQP等,能够有效地支持分布式系统中的异步通信。消息队列是一种设计模式,它允许应用程序通过将消息...

    amq最近安装包

    7. **安全性**:AMQ支持用户认证和授权,可以在 `conf/users.properties` 和 `conf/credentials.properties` 文件中设置用户名和密码。 8. **集群和高可用**:AMQ可以通过集群模式提高可用性和性能,多个 broker ...

    AMQ样例,参考

    标题中的“AMQ样例,参考”提示我们,这是一个关于ActiveMQ应用的示例,用于指导用户理解如何在实际环境中部署和使用ActiveMQ。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它作为消息中间件,允许应用程序...

    AMQ接收与发送

    同时,对于安全性,ActiveMQ支持SSL/TLS加密、用户认证和授权,以保护消息传输的安全。 总结来说,"AMQ接收与发送"涵盖了ActiveMQ中的核心概念和操作,包括消息的生产和消费、接收与发送端的分离、MQ控制台的使用,...

    10Gtek AMQ10-SR4-M1 (JH2)V1.1.pdf

    【10Gtek AMQ10-SR4-M1(JH2)V1.1.pdf】是一款由10Gtek公司推出的40GBASE-SR QSFP+光收发器规格书,主要针对高速网络连接,特别是数据中心和高性能计算环境。这款产品支持40GBASE-SR4和QDR应用,符合QSFP+电气多源...

    AMQ28-SR4-M1-V1.0

    ### AMQ28-SR4-M1-V1.0 光模块关键技术知识点解析 #### 一、产品概述 AMQ28-SR4-M1-V1.0 是一种高性能的100G QSFP28 SR4 光模块,适用于短距离传输(如数据中心内部连接),最大传输距离可达100米(在OM4多模光纤...

    spring整合amq

    标题中的“spring整合amq”指的是将Spring框架与ActiveMQ(AMQ)集成,以便在Spring应用程序中使用消息队列进行通信。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的消息代理,实现了多种消息协议,...

    springboot+amq+javamail+maven

    ActiveMQ提供了高可用性、可扩展性和安全性,使得分布式系统中的组件可以解耦,提高系统的灵活性和可靠性。 **JavaMail** JavaMail是一个用于处理邮件的Java API,它提供了一套全面的邮件服务,包括SMTP、POP3、...

    CentOS环境安装配置AMQ集群及zookeeper集群

    ### CentOS环境下AMQ集群与Zookeeper集群安装配置详解 #### 一、概述 本文将详细介绍如何在CentOS环境中安装配置ActiveMQ (AMQ) 集群和Zookeeper集群。这两种集群技术对于分布式系统的消息传递和服务协调至关重要...

    ActiveMQ Web开发 amq.js

    最新在做ActiveMQ Web端开发时,绕了很多路找到了这个插件,小编在这里就贡献了给爱学习小伙伴用。

    amq-examples:此存储库包含一组与 Red Hat AMQ 消息传递套件组件一起使用的示例

    红帽 AMQ 示例 该存储库包含一组与 Red Hat AMQ 消息传递套件组件一起使用的示例。 :股票报价应用程序展示了来自浏览器的rhea javascript 客户端、websockets 和 TLS 连接 :简单Hello World的NodeJS应用特色rhea ...

    AMQ-Scripts:脚本的全面存储库,可提高AMQ的生活质量

    AMQ脚本这是所有脚本的万能库,可提高“中游戏/生活质量的所有脚本。用法可以通过将大多数脚本导入浏览器扩展程序来使用它们,例如用于.js文件的和用于.css文件的 。 在特定项目的文件夹中可以找到更多信息。 design...

    random-amq:一个让我搞乱amq东西的地方(animemusicquiz.com)

    然后使用amq_scraper.py脚本中保存的CSV文件获取JSON文件。 用法是: amq_scraper.py &lt;sheet&gt; 一些较旧的文件可能包含JSON错误,必须手动更正。 但是,如果您从此存储库下载JSON文件而不是再次抓取它们,则应该...

    amq-scripts:动漫音乐测验脚本集

    AMQ脚本userscripts动漫音乐测验的* monkey用户脚本集合amqCoopPaste.user.js Kinda现在在官方团队模式下已经无法使用,但是如果每个人都一个人玩,以个人玩家的身份玩游戏,每个正确答案仍然会提供更多XP /音符。...

    camel-wmq-amq:Camel IBM Websphere MQ 到 Active MQ 桥接路由

    骆驼-wmq-amq Camel IBM Websphere MQ 到 Active MQ 桥接路由 先决条件 IBM 为安装在 Fuse 上的 MQ 客户端提供了 OSGi jar 文件IBM_MQ_INSTALL_DIR/java/lib/OSGi 运行 AMQ 代理 带有填充属性的 JBOSS_FUSE_INSTALL...

    camel-amq-integrator:骆驼项目定义了外部AMQ 7的生产者和消费者

    JMS和文件示例 介绍 本示例使用骆驼框架创建一个简单的生产者和消费者。 建造 您将需要首先编译此示例: mvn compile 消费者运行 如果您键入该示例应运行 mvn camel:run 这将创建队列“ testclient.payment....

    jboss-amq-quickstarts:JBoss A-MQ快速入门

    快速入门自述文件使用可替换值AMQ_HOME表示JBoss A-MQ安装的路径。 当您在README文件中遇到此值时,请确保将其替换为JBoss A-MQ安装的实际路径。 建议的快速入门方法 我们建议您按照以下方法进行快速入门: 无论您...

    amq-example:A-MQ 示例

    【标题】:“amq-example:A-MQ 示例” 【描述】:“AMQ OpenShift 客户端,AMQ 客户端实验室练习的支持文件,amq-example” 【标签】:“Java” 【压缩包子文件的文件名称列表】:amq-example-master --- 在...

    ActiveMQ(AMQ)单浏览器AJAX多页面客户端的支持(clientId)

    ActiveMQ(AMQ)是Apache软件基金会开发的一个开源消息中间件,它支持多种协议,包括OpenWire、STOMP、MQTT、AMQP等,广泛应用于分布式系统中的异步通信和解耦。在Web应用程序中,AJAX(Asynchronous JavaScript and...

Global site tag (gtag.js) - Google Analytics