`

ActiveMQ使用笔记(四)ActiveMQ配置安全性

 
阅读更多

监视ActiveMQ的方式有多种,在第一部分中已经说到了Web监视控制台,设置登录用户名和密码,这里再说一下JMX监控。运行了ActiveMQ之后,再运行jdk自带的jconsole即可以看到ActiveMQ的进程,如图:

点击连接之后就可以看到ActiveMQ的运行情况。默认情况下是不需要用户名和口令的,修改activemq.bat,找到

SUNJMX=-Dcom.sun.management.jmxremote.port=1099
 -Dcom.sun.management.jmxremote.authenticate=false 
 -Dcom.sun.management.jmxremote.ssl=false

 修改成

SUNJMX=-Dcom.sun.management.jmxremote.port=1616
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.password.file=%ACTIVEMQ_BASE%/conf/jmx.password
-Dcom.sun.management.jmxremote.access.file=%ACTIVEMQ_BASE%/conf/ jmx.access
 

Linux下的找到:

#ACTIVEMQ_SUNJMX_START="-Dcom.sun.management.jmxremote.port=11099 "
#ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.password.file=${ACTIVEMQ_CONFIG_DIR}/jmx.password"
#ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.access.file=${ACTIVEMQ_CONFIG_DIR}/jmx.access"
#ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote.ssl=false"
ACTIVEMQ_SUNJMX_START="$ACTIVEMQ_SUNJMX_START -Dcom.sun.management.jmxremote"
 

去掉注释即可。
重启ActiveMQ之后,在用jconsole连接就需要输入用户名和密码,jmx.access文件配置用户的访问权限readonly和 readwrite,admin readwrite表示用户admin具有读写权限。Jmx.password文件配置用户的密码,admin activemq 表示admin用户的密码是activemq。

除了监视台可以设置用户名和密码之后,ActiveMQ也可以对各个主题和队列设置用户名和密码,配置如下:

<plugins>
  <!-- Configure authentication; Username, passwords and groups -->
  <simpleAuthenticationPlugin>
      <users>
          <authenticationUser username="system" password="manager" groups="users,admins"/>
          <authenticationUser username="user" password="password" groups="users"/>
          <authenticationUser username="guest" password="password" groups="guests"/>
          <authenticationUser username="testUser" password="123456" groups="testGroup"/>
      </users>
  </simpleAuthenticationPlugin>
  <!--  Lets configure a destination based authorization mechanism -->
  <authorizationPlugin>
    <map>
      <authorizationMap>
        <authorizationEntries>
          <authorizationEntry queue="queue.group.uum" read="users" write="users" admin="users" />
          <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 queue="TEST.Q" read="guests" write="guests" />
          <authorizationEntry queue="test" read=" testGroup " write=" testGroup " />
          <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 ,testGroup" write="guests,users ,testGroup " admin="guests,users ,testGroup "/>
        </authorizationEntries>
      </authorizationMap>
    </map>
  </authorizationPlugin>
</plugins>

 simpleAuthenticationPlugin中设置用户名、密码和群组,authorizationPlugin设置主题和队列的访问群 组,“>”表示所有的主题或者队列。上面的配置中添加了一个testUser,属于群组testGroup,同时设置test这个队列的访问读写权 限为testGroup,当然admins也可以访问的,因为admins是对所有的队列都有访问权限。将第三部分代码中的设置用户名和密码改成刚刚添加 的用户testUser,如果密码不正确,将会抛出User name or password is invalid.异常,如果testUser所属的群组不能访问test队列,那么会抛出User guest is not authorized to write to: queue://test异常。需要注意的是所有的群组都需要对以ActiveMQ.Advisory为前缀的主题具有访问权限。

 

分享到:
评论

相关推荐

    ActiveMQ学习笔记之四--启动嵌入式Broker(纯代码方式)

    在本篇ActiveMQ学习笔记中,我们将探讨如何通过纯代码方式启动一个嵌入式的Broker,这对于测试、开发或者快速原型构建非常有用。ActiveMQ是一个开源的消息代理,它遵循Java消息服务(JMS)规范,提供了高可靠性的...

    ActiveMQ 教学视频/教程 /附带笔记等资源

    在这个"ActiveMQ 教学视频/教程 /附带笔记等资源"的压缩包中,你将找到一系列关于如何使用ActiveMQ作为中间件的教育资源。 首先,让我们深入了解ActiveMQ的核心概念和功能: 1. **核心概念**: - **消息队列...

    ActiveMQ笔记

    **ActiveMQ笔记** ActiveMQ是Apache软件基金会的一个开源项目,它是Java消息服务(JMS)的一个实现,专门用于处理消息传递。作为一个中间件,ActiveMQ允许应用程序之间通过异步通信来解耦它们的功能,提高系统的可...

    ActiveMQ学习笔记之九--发送消息到队列中

    这篇"ActiveMQ学习笔记之九--发送消息到队列中"主要探讨的是如何通过编程方式向ActiveMQ队列发送消息,这对于理解和应用消息中间件至关重要。 首先,我们要理解ActiveMQ中的队列(Queue)概念。队列是一种先进先出...

    ActiveMQ学习笔记之一--ActiveMQ下载

    **ActiveMQ学习笔记之一——ActiveMQ下载** ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它是基于Java消息服务(JMS)规范的,用于在分布式系统中传递消息。作为一个高性能、可伸缩且可靠的解决方案,...

    ActiveMq笔记.zip

    **ActiveMQ笔记** ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它是Java Message Service (JMS) 的实现,广泛应用于分布式系统中的异步通信。本笔记将详细探讨ActiveMQ的核心概念、工作原理以及实际应用...

    activeMQ总结

    3. 安全性:支持用户认证和授权,保障数据安全。 4. 跨语言支持:ActiveMQ不仅支持Java,还支持C++、Python、Ruby等多种语言的客户端。 5. 灵活性:允许配置各种消息持久化策略、网络拓扑和负载均衡策略。 6. 丰富的...

    activemq,dubbo,linux,redis,shiro,solr笔记整理+视频资源

    这六个技术在实际开发中经常结合使用,例如,Linux作为基础操作系统,Dubbo负责服务间通信,Redis提供缓存和快速数据访问,Solr处理全文搜索,Shiro管理用户安全,而ActiveMQ则作为消息队列确保任务的异步执行和解耦...

    activemq,dubbo,linux,redis,shiro,solr笔记整合,基本都是面试会问到的经典题型

    ActiveMQ允许应用程序之间进行异步通信,提高了系统的可扩展性和解耦性。面试中可能会问到ActiveMQ的基本概念,如生产者与消费者模型、队列与主题的区别、以及如何处理消息的持久化和事务等。 **Dubbo** 是阿里巴巴...

    Java课件老师讲的

    Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、安全性和健壮性。在Java的学习过程中,基础知识是非常重要的,这里我们将深入探讨Java语言的基础概念。 首先,Java的基本语法单位包括...

    java学习笔记

    - 安全性:ActiveMQ支持多种安全特性,如SSL/TLS加密通信、身份验证以及授权等,确保消息在传输过程和存储过程中的安全。 - 高可用性与集群:ActiveMQ支持网络集群和故障转移,可以部署在多个节点上以提供高可用性。...

    redis、activemq、juc、jvm、gc等知识点的脑图.rar

    在微服务架构中,ActiveMQ常用于服务间的通信,减少直接依赖,提高系统的可扩展性和可靠性。 JUC(Java Concurrency Utilities)是Java并发包,提供了高级并发工具类,如线程池、并发容器、锁、信号量等,帮助...

    JMS相关,教程,例子,学习笔记

    **JMS例子** 可能包括创建简单的生产者和消费者,以及更复杂的场景,如实现故障切换、负载均衡或者使用事务确保消息的一致性。例如,一个例子可能演示如何通过JMS API创建一个生产者,向队列发送一条消息,然后创建...

    狂神说全部笔记内容.zip

    笔记可能介绍了ActiveMQ的基本概念、配置、使用场景,以及如何与其他Java应用集成。 4. **Redis精讲**(37、Redis精讲.pdf):Redis是一个高性能的键值存储系统,常用于缓存和实时数据处理。笔记可能会涵盖Redis的...

    Fuse ESB 4.3.1使用笔记

    ### Fuse ESB 4.3.1 使用笔记 #### 一、概述 Fuse ESB (Enterprise Service Bus) 4.3.1 是一个强大的企业级服务总线平台,基于Apache Karaf容器构建,用于集成不同的应用程序和服务。它支持多种集成模式和技术栈,...

    JMS学习笔记精心总结

    通过配置和使用ActiveMQ,我们可以深入了解JMS的实际应用。 在实际开发中,了解如何在Java应用程序中集成JMS,如创建ConnectionFactory、Session、Producer和Consumer,以及如何发送和接收消息,是非常重要的。此外...

    面试专题课堂笔记.zip

    9. **10搜索引擎篇.pdf** - 可能涉及到搜索引擎的基本原理,如Lucene库的使用,Elasticsearch的安装配置及查询优化,以及如何在Java项目中集成搜索引擎。 10. **11安全验证篇.pdf** - 安全是任何软件系统的重要组成...

    一线大厂金三银四面试资料.zip

    6. 安全性:身份验证和授权机制,如JAAS的使用。 7. 性能优化:消息持久化、消息压缩和批量发送等技巧。 接下来是"java后端面试题答案"。Java后端开发是软件工程中的关键部分,面试时可能会涉及以下内容: 1. Java...

Global site tag (gtag.js) - Google Analytics