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

配置activemq5.1.0的安全机制

阅读更多

在这里仅介绍配置activemq5.1.0默认的JAAS安全机制的配置方法。而且就是安装官网文档上说明设置的。当然官网文档上的设置是针对ActiveMQ 4.x的。我没有找到特地的针对5.1版本的。于是就默认为向下兼容,或者说领个版本在安全设置上没有变更。官网文档地址:http://activemq.apache.org/security.html

 

一.目的:我们在自己的服务器上假设avtivemq 消息代理,如果不加入安全机制的话,任何连入internet的人,只要知道消息服务的具体地址(包括ip,端口,消息地址[队列或者主题地址],),都可以肆无忌惮的发送、接收消息。想象如果没有安全机制,这将会引起上么样的后果。

 

二.配置环境:我采用的环境就是activemq5.1.0。需要修改或者添加的文件有

     %avtivemq home%/conf/activemq.xml                ------------------  修改

     %avtivemq home%/conf/login.config                   ------------------  增加

     %avtivemq home%/conf/groups.properties         ------------------  增加

     %avtivemq home%/conf/users.properties           ------------------  增加

     %avtivemq home%/webapps/admin/WEB-INF/webconsole-embedded.xml    ------------------  修改

 

三.具体过程以及讲解:

  (1).activemq.xml的修改(下面是修改过的全文,加粗部分是修改过的部分)

 <!-- Allows us to use system properties as variables in this configuration file -->
 <bean
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />

 <broker xmlns="http://activemq.apache.org/schema/core"
  brokerName="localhost" dataDirectory="${activemq.base}/data">

  <!-- Destination specific policies using destination names or wildcards -->
  <destinationPolicy>
   <policyMap>
    <policyEntries>
     <policyEntry queue=">" memoryLimit="5mb" />
     <policyEntry topic=">" memoryLimit="5mb">
      <dispatchPolicy>
       <strictOrderDispatchPolicy />
      </dispatchPolicy>
      <subscriptionRecoveryPolicy>
       <lastImageSubscriptionRecoveryPolicy />
      </subscriptionRecoveryPolicy>
     </policyEntry>
    </policyEntries>
   </policyMap>
  </destinationPolicy>

  <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
  <managementContext>
   <managementContext createConnector="false" />
  </managementContext>

  <!-- The store and forward broker networks ActiveMQ will listen to -->
  <networkConnectors>
   <!-- by default just auto discover the other brokers -->
   <networkConnector name="default-nc"
    uri="multicast://default" />
   <!-- Example of a static configuration:
    <networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
   -->
  </networkConnectors>

  <persistenceAdapter>
   <amqPersistenceAdapter syncOnWrite="false"
    directory="${activemq.base}/data" maxFileLength="20 mb" />
  </persistenceAdapter>

  <!-- Use the following if you wish to configure the journal with JDBC -->
  <!--
   <persistenceAdapter>
   <journaledJDBC dataDirectory="${activemq.base}/data" dataSource="#postgres-ds"/>
   </persistenceAdapter>
  -->

  <!-- Or if you want to use pure JDBC without a journal -->
  <!--
   <persistenceAdapter>
   <jdbcPersistenceAdapter dataSource="#postgres-ds"/>
   </persistenceAdapter>
  -->

  <!--  The maximum about of space the broker will use before slowing down producers -->
  <systemUsage>
   <systemUsage>
    <memoryUsage>
     <memoryUsage limit="20 mb" />
    </memoryUsage>
    <storeUsage>
     <storeUsage limit="1 gb" name="foo" />
    </storeUsage>
    <tempUsage>
     <tempUsage limit="100 mb" />
    </tempUsage>
   </systemUsage>
  </systemUsage>


  <!-- The transport connectors ActiveMQ will listen to -->
  <transportConnectors>
   <transportConnector name="openwire"
    uri="tcp://localhost:61616" discoveryUri="multicast://default" />
   <transportConnector name="ssl" uri="ssl://localhost:61617" />
   <transportConnector name="stomp"
    uri="stomp://localhost:61613" />
   <transportConnector name="xmpp"
    uri="xmpp://localhost:61222" />
  </transportConnectors>

  <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>

      <!-- let's assign roles to temporary destinations. comment this entry if we don't want any roles assigned to temp destinations  -->
      <tempDestinationAuthorizationEntry>
       <tempDestinationAuthorizationEntry
        read="tempDestinationAdmins" write="tempDestinationAdmins"
        admin="tempDestinationAdmins" />
      </tempDestinationAuthorizationEntry>
     </authorizationMap>
    </map>
   </authorizationPlugin>
  </plugins>


 </broker>

 <!--
  ** Lets deploy some Enterprise Integration Patterns inside the ActiveMQ Message Broker
  ** For more details see
  **
  ** http://activemq.apache.org/enterprise-integration-patterns.html
 -->
 <camelContext id="camel"
  xmlns="http://activemq.apache.org/camel/schema/spring">

  <!-- You can use a <package> element for each root package to search for Java routes -->
  <package>org.foo.bar</package>

  <!-- You can use Spring XML syntax to define the routes here using the <route> element -->
  <route>
   <from uri="activemq:example.A" />
   <to uri="activemq:example.B" />
  </route>
 </camelContext>
 <!-- configure the camel activemq component to use the current broker -->
 <bean id="activemq"
  class="org.apache.activemq.camel.component.ActiveMQComponent">
  <property name="connectionFactory">
   <bean
    class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL"
     value="vm://localhost?create=false&amp;waitForStart=10000" />
    <property name="userName" value="system" />
    <property name="password" value="manager" />
   </bean>
  </property>
 </bean>


 <!-- Uncomment to create a command agent to respond to message based admin commands on the ActiveMQ.Agent topic -->
 <!--
  <commandAgent xmlns="http://activemq.apache.org/schema/core" brokerUrl="vm://localhost"/>
 -->


 <!-- An embedded servlet engine for serving up the Admin console -->
 <jetty xmlns="http://mortbay.com/schemas/jetty/1.0">
  <connectors>
   <nioConnector port="8161" />
  </connectors>

  <handlers>
   <webAppContext contextPath="/admin"
    resourceBase="${activemq.base}/webapps/admin" logUrlOnStart="true" />
   <webAppContext contextPath="/demo"
    resourceBase="${activemq.base}/webapps/demo" logUrlOnStart="true" />
   <webAppContext contextPath="/fileserver"
    resourceBase="${activemq.base}/webapps/fileserver"
    logUrlOnStart="true" />
  </handlers>
 </jetty>

 <!-- END SNIPPET: example -->

 

(2)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";
};

 

(3)groups.properties的内容

admins=system
tempDestinationAdmins=system,user
users=system,user
guests=guest

上面内容的结构是 组名=用户名1,用户名2...   意在存储组信息,指明组中有什么用户

(4)users.properties的内容

system=manager
user=password
guest=password

上面内容的结构是 用户名=密码 意在存储用户信息

(5)webconsole-embedded.xml的内容(下面是全文,加粗部分是修改过的内容)

<?xml version="1.0" encoding="UTF-8" ?>

<beans>

 <bean id="placeholderConfig"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />

 <!-- use the following bean for a local in-JVM broker -->
 <bean id="brokerQuery"
  class="org.apache.activemq.web.SingletonBrokerFacade"
  autowire='constructor' singleton="false" />


 <bean id="sessionPool"
  class="org.apache.activemq.web.SessionPool">
  <property name="connectionFactory" ref="connectionFactory" />
 </bean>

 <bean id="connectionFactory"
  class="org.apache.activemq.ActiveMQConnectionFactory">
  <property name="brokerURL" value="vm://localhost" />
  <property name="userName" value="system" />
  <property name="password" value="manager" />
 </bean>

 <bean id="queueBrowser"
  class="org.apache.activemq.web.QueueBrowseQuery"
  autowire='constructor' singleton="false" />
 <bean id="messageQuery" class="org.apache.activemq.web.MessageQuery"
  autowire='constructor' singleton="false" />

</beans>

 

这个配置是为了让我们能够进入activemq自带的activemq web控制台控制和监测消息服务。

 

四.开启服务与总结。

        在命令行控制台进入%avtivemq home%/bin。执行activemq命令启动服务器。如果是按照上面的步骤一步一步来的,现在应该能成功的启动带有安全机制的activemq消息中间件代理服务。

        下午配置多时,就是没有配置成功,总是报这样那样的异常错误。看来是自己没有静下心来。晚上回家稍微推敲一番,看着控制台的异常原因和官方文档,按步就班地,便配置成功。心得自然是要静下心来看文档,并推敲出现异常的原因。

分享到:
评论
3 楼 liliang_xf 2008-11-27  
2 楼 zhyt710 2008-11-08  
whiskey 写道

帅锅,不行哦。


肯定行的
你不行只能说明你自己不够耐心,或者说你自己笨。
1 楼 whiskey 2008-11-08  
帅锅,不行哦。

相关推荐

    activemq-jpa-store-5.1.0-javadoc.jar

    标签:activemq-jpa-store-5.1.0-javadoc.jar,activemq,jpa,store,5.1.0,javadoc,jar包下载,依赖包

    apache-activemq-5.1.0-bin fms

    6. **安全性**:通过用户认证和授权机制,ActiveMQ可以保护其资源免受未经授权的访问。 7. **管理工具**:ActiveMQ附带了一个基于Web的管理控制台,可以监控和管理消息代理的状态、消费者、生产者以及消息。 8. **...

    apache-activemq-5.1.0-src

    在"apache-activemq-5.1.0-src"中,我们获得的是ActiveMQ的源代码版本,这对于我们深入理解其内部工作原理、定制功能或进行二次开发非常有价值。 **Apache ActiveMQ概述** Apache ActiveMQ是一个开源的消息中间件,...

    activeMQ-5.1.0

    ActiveMQ-5.1.0是该产品的一个较早版本,包含了用于开发和运行ActiveMQ所需的核心组件和相关依赖库。 1. **activemq-core-5.1.0.jar**:这是ActiveMQ的核心库,包含ActiveMQ服务器的主要功能,如队列管理、主题发布...

    ActiveMQ的安全机制使用及其源代码分析

    最近在项目开发中,需要为ActiveMQ开发基于IP的验证和授权机制,因此,对ActiveMQ的安全机制进行了了解,以下将介绍ActiveMQ的安全机制使用及其源代码分析。操作系统:WindowsXPJava:jdk1.6.0_12maven:maven3.0.4...

    ActiveMQ 配置文件详解

    理解ActiveMQ的配置文件对于优化其性能、确保稳定性和安全性至关重要。 ActiveMQ的配置主要通过`activemq.xml`文件进行,这个文件位于ActiveMQ安装目录的`conf`文件夹下。这个XML文件定义了ActiveMQ服务器的核心...

    activemq-rar-5.1.0.rar

    标题中的"activemq-rar-5.1.0.rar"指的是Apache ActiveMQ的一个RAR(Resource Adapter Archive)版本,这是ActiveMQ的特定版本,用于在Java应用服务器中部署和管理消息代理服务。RAR文件是一种特殊格式的归档,通常...

    spring配置activemq详解

    在"spring配置activemq详解"这个主题中,我们将探讨如何在Spring项目中配置和使用ActiveMQ。以下是对这个主题的详细说明: 1. **配置ActiveMQ**: - 首先,我们需要在项目中引入ActiveMQ的相关依赖,这通常通过在`...

    activemq spring 客户端配置

    标题中的“activemq spring 客户端配置”指的是如何在Spring框架中设置Apache ActiveMQ作为消息中间件的客户端。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它实现了多种消息协议,如JMS(Java Message ...

    配置ActiveMQ 静态集群

    对于开发者来说,了解ActiveMQ的源码有助于深入理解其内部工作机制。可以查阅ActiveMQ的GitHub仓库,查看相关的类和方法,如`org.apache.activemq.broker.NetworkBridge`,了解集群连接的实现细节。 通过以上步骤...

    ActiveMQ5.13 安装与配置

    "ActiveMQ5.13 安装与配置" ActiveMQ 是 Apache 软件基金会提供的一个开源message broker,能够实现点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)模式的消息传递。ActiveMQ 5.13 是 ActiveMQ 的一个...

    ActiveMQ路由配置方式

    ActiveMQ路由配置方式 ActiveMQ路由配置是Apache ActiveMQ项目中的一种重要配置方式,它依赖另一个Apache项目Camel。ActiveMQ集成了Camel,启动时同时会启动Camel。通过Camel Web Console可以进行Routing配置。 ...

    activemq-ra-5.1.0.jar

    标签:activemq-ra-5.1.0.jar,activemq,ra,5.1.0,jar包下载,依赖包

    activemq-web-5.1.0.jar

    标签:activemq-web-5.1.0.jar,activemq,web,5.1.0,jar包下载,依赖包

    activemq5配置文档

    - **配置文件**:ActiveMQ的配置主要通过`activemq.xml`文件进行,这个XML文件定义了服务器的启动参数、网络连接、消息存储和安全设置等。 - **Broker配置**:Broker是ActiveMQ的核心,配置中包括了broker的名称、...

    ActiveMQ的activemq.xml详细配置讲解

    **ActiveMQ的activemq.xml配置详解** ActiveMQ是Apache软件基金会...总之,`activemq.xml`配置文件是管理ActiveMQ核心行为的核心,通过细致地调整其各项设置,我们可以定制一个高效、安全且适应业务需求的消息中间件。

    activeMQ_spring简单案例(含XML配置)

    接下来,我们看看如何在Spring中配置ActiveMQ。Spring框架提供了一套完整的JMS支持,包括连接工厂、目的地(队列或主题)以及消息监听器的声明式配置。在XML配置文件中,我们可以定义如下的元素: ```xml ...

Global site tag (gtag.js) - Google Analytics