`
Riddick
  • 浏览: 642123 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ActiveMQ学习笔记----ActiveMQ中的安全机制

    博客分类:
  • JMS
阅读更多

本文简单介绍ActiveMQ通过JAAS实现的安全机制。


JAAS(Java Authentication and Authorization Service)也就是java认证/授权服务。这是两种不同的服务,下面对其做一些区别:
     验证(Authentication)就是要验证一个用户的有效性,即用户名、密码是否正确;
     授权(Authorization)就是授予用户某种角色,以使用户只能访问具有相应角色的资源。


ActiveMQ中使用JAAS实现消息安全和控制是通过使用配制文件来实现的。


认证服务:


编写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";
};

 把这个文件放在CLASSPATH所指路径下,我选择放在%ACTIVEMQ_HOME%\conf\下,这样就不用设置了。然后编写users.properties和groups.properties文件,内容可参考下例:

#users.properties
system=manager
user=password
guest=password
#groups.properties
admins=system
users=system,user
guests=guest

 内容是显而易见的,users.properties文件里面配制了三个用户,并分别制定了他们的密码。groups.properties文件里配制了三个组,以及每个组里面的用户。这两个文件和login.config放在同一个目录。

 

授权服务:

 

 

通过修改activemq.xml文件来增加对不同group中的用户指定所能进行的操作。

 

 

<beans xmlns="http://activemq.org/config/1.0">
  <!-- Allows us to use system properties as variables in this configuration file -->
  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
 
  <broker useJmx="true">
    <!-- In ActiveMQ 4, you can setup destination policies --> 
    <destinationPolicy>
      <policyMap>
        <policyEntries>
          <policyEntry topic="FOO.>">

            <dispatchPolicy>
              <strictOrderDispatchPolicy />
            </dispatchPolicy>

            <subscriptionRecoveryPolicy>
              <lastImageSubscriptionRecoveryPolicy />
            </subscriptionRecoveryPolicy>

          </policyEntry>
      </policyEntries>
     </policyMap>
    </destinationPolicy>
 
    <persistenceAdapter>
        <journaledJDBC journalLogFiles="5" dataDirectory="${activemq.home}/activemq-data"/>
      <!-- To use a different datasource, use the following syntax : -->
      <!--
      <journaledJDBC journalLogFiles="5" dataDirectory="../activemq-data" dataSource="#postgres-ds"/>
       -->
    </persistenceAdapter>
 
    <transportConnectors>
       <transportConnector name="default" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
       <transportConnector name="stomp"   uri="stomp://localhost:61613"/>
    </transportConnectors>
   
    <networkConnectors>
      <!-- by default just auto discover the other brokers -->
      <networkConnector name="default" uri="multicast://default"/>
      <!--
      <networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)" failover="true"/>
      -->
    </networkConnectors>
   
    <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,guests" write="guests" admin="admins,guests" />
              <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>   
  </broker>
</beans>

  <authorizationPlugin>标签所包含的内容授权配制信息。


从上面的配置文件可以看出,ActiveMQ使用者针对不同的queue或者topic设置了可以进行操作的组。此处主要涉及三种操作权限:read, write, admin,下面对其详细介绍。
read:可以从queue或者topic里面接收消息
write:可以向queue或者topic发送消息
admin:可以创建queue或者topic(可能还有别的功能)
这些文件配制好时,ActiveMQ就具有了基本的安全机制,另外需要注意的是,在ActiveMQ 4.0.1 release版中,并没有带有activemq-jaas.jar,需要自己下载。但在apache-activemq-4.1.1release版中已经增加activemq-jaas-4.1.1.jar,在ActiveMQ的lib目录下。
以上是对ActiveMQ的基于JAAS的安全机制的分析,至于这种方法是否灵活、方便、安全,与编程模式实现的安全机制有什么异同还需要进一步分析比较。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mqboss/archive/2007/06/22/1662481.aspx

分享到:
评论

相关推荐

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

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

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

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

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

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

    ActiveMQ In Action翻译笔记-更新版2011

    这份笔记由**邓建利**审核并批准,体现了作者对于J2EE架构的深入学习和研究,以及对英文文档学习障碍的克服,对于希望深入了解ActiveMQ及其在J2EE架构中应用的读者来说,是一份宝贵的资源。 总结而言,**ActiveMQ**...

    消息队列activemq学习笔记

    ### 消息队列Activemq学习笔记 #### MQ入门概述 消息队列(Message Queue,简称MQ)是一种用于在应用程序之间传递数据的机制。它允许应用之间通过发送消息进行通信,而无需直接调用对方。 ##### 前言:MQ=消息...

    Apache ActiveMQ学习笔记【原创:mq的方式有两种:点到点和发布/订阅】

    ### Apache ActiveMQ 学习笔记 #### 一、ActiveMQ简介与安装 ##### 1.1 ActiveMQ概述 Apache ActiveMQ 是一个完全支持 JMS 1.1 和 J2EE 1.4 规范的消息服务器。它适用于 Java 消息服务 (JMS),并且是一个开源项目...

    active mq 学习笔记

    ### ActiveMQ学习笔记知识点梳理 #### 一、ActiveMQ简介 **定义:** - **ActiveMQ**是由Apache出品的一款功能强大的开源消息中间件。作为消息队列(Message Queue,简称MQ)的一种,它主要用来在分布式系统之间...

    ActiveMq.md

    activemq学习笔记 activemq学习笔记 activemq学习笔记 activemq学习笔记 activemq学习笔记 activemq学习笔记

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

    在学习过程中,你可以通过观看视频来直观了解ActiveMQ的操作,查阅笔记回顾关键知识点,阅读案例文档以了解实际应用。这些资源将帮助你快速掌握ActiveMQ的使用,并将其有效地应用于你的IT项目中。

    ActiveMQ学习笔记(二) JMS与Spring

    在本篇ActiveMQ学习笔记中,我们将探讨JMS(Java Message Service)与Spring框架的集成。JMS是一种标准API,用于在分布式环境中进行异步消息传递,而Spring框架则为开发人员提供了强大的依赖注入和管理服务的能力。...

    activeMQ笔记

    ### ActiveMQ学习笔记知识点梳理 #### 一、ActiveMQ简介与消息传递机制 **ActiveMQ**是一款开源的消息中间件,支持多种消息传输协议,如AMQP、STOMP、MQTT等,广泛应用于分布式系统中进行消息传递。在ActiveMQ的...

    activemq系列笔记

    - **高可用性**:通过网络集群和故障转移机制,ActiveMQ可以实现零停机时间,确保服务始终可用。 - **多协议支持**:除了JMS,ActiveMQ还支持AMQP、STOMP、XMPP、OpenWire等多种协议,方便与不同平台和语言的...

    MQ之ActiveMQ.mmap

    本次以Apache的ActiveMQ作为切入点,分为基础/实战/面试上中下三大部分,将带着同学们 从零基础入门到熟练掌握ActiveMQ,能够结合Spring/SpringBoot进行实际开发配置并能够 进行MQ多节点集群的部署,最后学习MQ的...

    分享一些ActiveMQ的资料

    2. **ActiveMQ学习笔记.doc**: 这可能是个人或社区成员编写的笔记,涵盖了ActiveMQ的基本概念、安装步骤、配置和使用技巧。笔记通常更注重实践操作,是初学者快速上手的好资料。 3. **ActiveMQ与Tomcat整合.doc**...

    ActiveMQ+In+Action学习笔记.docx

    通过官方网站(http://activemq.apache.org)和JMS官方文档(http://java.sun.com/products/jms),开发者可以获取最新的资料和示例,进一步深入学习和实践ActiveMQ及其在J2EE环境中的应用。理解并熟练运用这些知识...

    JMS学习笔记(一)——JMS简介安装ActiveMQ

    **JMS学习笔记(一)——JMS简介与ActiveMQ安装** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它为应用程序提供了一种标准的方式,用来创建、发送、接收和读取...

    My-Note-Utils-Learn:学习笔记,类库。ActiveMQ消息队列,Layui常用公共类库,设计模式编码,多线程,JVM等

    xiaoshaDestiny:学习笔记,类库,面试QA learn-activemq 消息队列 ActiveMQ的使用,Spring整合ActiveMQ learn-data-tructure 数据结构 learn-design-pattern 设计模式 编码详解 learn-jedis Redis的客户端操作工具包 ...

    ActiveMQ.zip

    4. **脑图笔记**:`消息中间件之ActiveMQ.mmap` 可能是一个MindMap格式的学习笔记,详细解释了ActiveMQ的关键概念和用法,特别地,笔记中提到已修正了一些错别字,以避免误解。 **四、应用场景** 1. **微服务架构*...

    java学习笔记

    综合上述信息,Java学习笔记中的前辈经验与ActiveMQ的知识可以结合成一套完整的学习材料。对于初学者而言,这些知识点能够提供一个系统化的学习路径,帮助他们从基础出发,逐步深入理解Java语言及其在企业级应用开发...

Global site tag (gtag.js) - Google Analytics