最近在研究activeMQ,在按照官网的例子和一些资料写了些小实例,并打算用它来进行发送邮件使用,使用的过程中涉及到了安全性的问题,我本是用的最新版本activemq 5.3.2但是按照官网的资料,对这个版本的安全性配置提及很少,倒是没有出来的版本5.4.0里面的配置涉及到了,下载了一个5.4.0后发现果然配置起来相当简单。但是考虑到其还未发布,因此我对低一点版本的5.2.0进行了一个配置.
下文为ActiveMQ5.2配置的过程。
参考:http://activemq.apache.org/security.html
一、JMS服务安全性
1.打开activemq.xml,在<broker></broker>中增加
<plugins>
<!-- use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
<jaasAuthenticationPlugin configuration="activemq-domain" />
<!-- lets configure a destination based authorization mechanism -->
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
<authorizationEntry queue="USERS.>" read="users" write="users" admin="users" />
<authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
<authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
<authorizationEntry topic="USERS.>" read="users" write="users" admin="users" />
<authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
2.在conf目录下增加 login.config、groups.properties、users.properties
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";
};
groups.properties文件 内容如下:
admins=system
users.properties文件 内容如下:
system=manager
添加用户在users.properties文件下,group.properties为用户分组使用。
做好了如上的设置以后,程序再访问activeMQ的话就需要使用用户名和密码了。
二、管理控制台安全性
ActiveMQ缺省的管理是通过内置的jetty服务器,只要在浏览器中输入http://localhost:8161/admin,不需要登录,就可以对队列、主题及消息等进行管理,可以想象这非常不安全。
那么要解决管理控制台的安全性,除了通过修改管理端口号以及应用名称之外,最关键的也是需要进行配置,必须通过身份认证才能登录。
本文要说的方式主要是在不改变内置jetty的方式下,通过配置基本认证的方式来实现安全登录。
1.在activemq.xml中找到 <jetty xmlns="http://mortbay.com/schemas/jetty/1.0">,增加realm设置
<userRealms>
<jaasUserRealm name="adminRealm" loginModuleName="adminLoginModule">
</jaasUserRealm>
</userRealms>
2.在login.config增加如下配置:
adminLoginModule {
org.mortbay.jetty.plus.jaas.spi.PropertyFileLoginModule required
debug="true"
file="${activemq.base}/conf/realm.properties";
};
3.在conf中增加realm.properties文件,内容如下:
# 用户名:密码,角色
system:MD5:1d0258c2440a8d19e716292b231e3190,admins
4.把 jetty-plus-6.1.9.jar 放到 ${activemq.base}/lib/web/中
5.通过命令:java -cp jetty-6.1.9.jar;jetty-util-6.1.9.jar org.mortbay.jetty.security.Password system manager 可以修改密码的md5
6.打开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>
7.修改${activemq.base}/bin/activemq文件 找到ACTIVEMQ_OPTS,在后面追加:
%ACTIVEMQ_OPTS% %SUNJMX% %SSL_OPTS% -Djava.security.auth.login.config=%ACTIVEMQ_BASE%/conf/login.config
配置完成后,当访问http://localhost:8161/admin/时,将会弹出窗口以让用户输入登录帐号和密码。
期待5.4.0的发布,按照我下载的5.4.0,其配置远远简单了,只要修改jetty.xml的一个
<property name="authenticate" value="true" />
即可,很简单http://activemq.apache.org/web-console.html上有介绍。 不过郁闷的是5.3.2没配置出来。
分享到:
相关推荐
SSL连接器为消息传输提供了加密和认证功能,确保了数据传输的安全性。 传输连接器的监控是保证消息系统稳定性的重要手段。ActiveMQ提供了多种方式来监控和管理传输连接器,包括查看连接状态、流量统计、性能监控等...
6. **持久化与消息存储**:ActiveMQ可以配置为持久化消息,即使服务器重启,消息也不会丢失。它使用KahaDB作为默认的持久化存储,但也可以与其他存储系统集成。 7. ** selectors(选择器)**:选择器允许消费者只...
本文主要围绕ActiveMQ 5.2版本的配置进行深入探讨,旨在帮助开发者更好地理解和应用JMS。 1. **ActiveMQ简介** - **JMS提供商**:ActiveMQ是Apache软件基金会的一个开源项目,它是一个实现了JMS规范的消息中间件,...
6. **安全控制**:通过用户权限和认证机制保护消息的安全性。 四、MessageQueue API MessageQueue API是ActiveMQ API的一部分,专注于队列操作。队列是一种先进先出(FIFO)的数据结构,每个消息只能被一个消费者...
7. **aop**: 面向切面编程(AOP)模块允许开发者定义和执行横切关注点,如日志、事务管理、安全性等。Spring AOP通过代理模式实现,可以在不修改代码的情况下添加额外的行为。 8. **tx**: 事务管理模块为应用程序...
- **高可用性与安全性**:支持持久化消息存储,确保消息不会丢失,并具备强大的安全认证机制。 - **可扩展性**:能够随着业务增长而扩展,满足不同规模应用的需求。 **1.3 特点概述** - **标准兼容**:完全符合JMS...
以上是对 Spring Boot 相关知识点的详细解释,涵盖了 Spring Boot 的基础概念、配置管理、安全性、监控、第三方项目整合以及其他常见问题。希望这些内容能够帮助你在面试中更好地展示自己对 Spring Boot 的理解和...
5.2 配置与使用 开发者需要了解如何在JBoss中配置事务管理器,并在代码中使用UserTransaction接口开始、提交或回滚事务。 六、安全与权限控制 6.1 安全模型 JBoss提供了多种安全模型,包括角色基安全、认证和授权...
- **配置新IP**:通过`smit tcpip`命令配置新的PUP管理地址,包括设置HOSTNAME、IP ADDRESS、NETWORK MASK、DEFAULT GATEWAY等。 **2.3 登录PUP** - **访问方式**:完成设置后,通过浏览器访问`http://PUP管理地址...
- **功能**: 提供分布式环境中的一致性服务,如配置维护、域名服务、分布式同步、组服务等。 - **数据模型**: 基于树形结构的节点存储方式(Znode),每个节点可以存储少量数据,并且可以有子节点。 - **应用场景**: ...
- 安全性:具备强大的安全机制,保障应用程序的安全运行。 - **1.2 Java EE 5 的新特性** - 引入了JSF(JavaServer Faces)框架,简化了Web应用程序的开发。 - 支持EJB 3.0,提高了组件开发的灵活性。 - 强化了...
- **访问日志的使用**:通过配置文件设置日志的存储位置、格式等信息。 - **访问日志格式**:通常包括日期、时间、客户端IP地址、请求方法、URL、HTTP协议版本、响应状态码等字段。 - **访问日志使用示例**:给出...
7.4.5强制web安全性 7.4.6确保一个安全的通道 7.5视图层安全 7.5.1有条件地渲染内容 7.5.2显示用户身份验证信息 7.6保护方法调用 7.6.1创建一个安全切面 7.6.2使用元数据保护方法 7.7小结 第8章spring和...
7.4.5 强制Web安全性 7.4.6 确保一个安全的通道 7.5 视图层安全 7.5.1 有条件地渲染内容 7.5.2 显示用户身份验证信息 7.6 保护方法调用 7.6.1 创建一个安全切面 7.6.2 使用元数据保护方法 7.7 小结 第8...
7.4.5 强制Web安全性 7.4.6 确保一个安全的通道 7.5 视图层安全 7.5.1 有条件地渲染内容 7.5.2 显示用户身份验证信息 7.6 保护方法调用 7.6.1 创建一个安全切面 7.6.2 使用元数据保护方法 7.7 小结 第8...
- **ActiveMQ-JMS规范及使用**:了解JMS规范和ActiveMQ的使用。 - **Kafka实现原理剖析**:深入理解Kafka的设计原理。 **7.7 分布式缓存分析对比** - **Memcache的原理分析及使用**:比较Memcache和Redis的不同之...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine ...activemq...