关键字: activemq

2.4 Security
    ActiveMQ支持可插拔的安全机制,用以在不同的provider之间切换。
2.4.1 Simple Authentication Plugin
    Simple Authentication Plugin适用于简单的认证需求,或者用于建立测试环境。它允许在XML配置文件中指定用户、用户组和密码等信息。以下是ActiveMQ配置的一个例子:

  1. <plugins>
  2. ...
  3. <simpleAuthenticationPlugin>
  4. <users>
  5. <authenticationUser username="system" password="manager" groups="users,admins"/>
  6. <authenticationUser username="user" password="password" groups="users"/>
  7. <authenticationUser username="guest" password="password" groups="guests"/>
  8. </users>
  9. </simpleAuthenticationPlugin>
  10. </plugins>

2.4.2 JAAS Authentication Plugin
    JAAS Authentication Plugin依赖标准的JAAS机制来实现认证。通常情况下,你需要通过设置java.security.auth.login.config系统属性来配置login modules的配置文件。如果没有指定这个系统属性,那么JAAS Authentication Plugin会缺省使用login.config作为文件名。以下是一个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";
};
    这个login.config文件中设置了两个属性:org.apache.activemq.jaas.properties.user和org.apache.activemq.jaas.properties.group分别用来指向user.properties和group.properties文件。需要注意的是,PropertiesLoginModule使用本地文件的查找方式,而且查找时采用的base directory是login.config文件所在的目录。因此这个login.config说明user.properties和group.properties文件存放在跟login.config文件相同的目录里。
    以下是ActiveMQ配置的一个例子:

  1. <plugins>
  2. ...
  3. <jaasAuthenticationPlugin configuration="activemq-domain" />
  4. </plugins>

ActiveMQ JAAS还支持LDAPLoginModule、CertificateLoginModule、TextFileCertificateLoginModule等login module。

2.4.3 Custom Authentication Implementation
    可以通过编码的方式为ActiveMQ增加认证功能。例如编写一个类继承自XBeanBrokerService。

  1. package com.yourpackage;
  2. import java.net.URI;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import org.apache.activemq.broker.Broker;
  6. import org.apache.activemq.broker.BrokerFactory;
  7. import org.apache.activemq.broker.BrokerService;
  8. import org.apache.activemq.security.SimpleAuthenticationBroker;
  9. import org.apache.activemq.xbean.XBeanBrokerService;
  10. public class SimpleAuthBroker extends XBeanBrokerService {
  11. //
  12. private String user;
  13. private String password;
  14. @SuppressWarnings("unchecked")
  15. protected Broker addInterceptors(Broker broker) throws Exception {
  16. broker = super.addInterceptors(broker);
  17. Map passwords = new HashMap();
  18. passwords.put(getUser(), getPassword());
  19. broker = new SimpleAuthenticationBroker(broker, passwords, new HashMap());
  20. return broker;
  21. }
  22. public String getUser() {
  23. return user;
  24. }
  25. public void setUser(String user) {
  26. this.user = user;
  27. }
  28. public String getPassword() {
  29. return password;
  30. }
  31. public void setPassword(String password) {
  32. this.password = password;
  33. }
  34. }
  1. <beans>
  2. <auth:SimpleAuthBroker
  3. xmlns:auth="java://com.yourpackage"
  4. xmlns="http://activemq.org/config/1.0" brokerName="SimpleAuthBroker1" user="user" password="password" useJmx="true">
  5. <transportConnectors>
  6. <transportConnector uri="tcp://localhost:61616"/>
  7. </transportConnectors>
  8. </auth:SimpleAuthBroker>
  9. </beans>

2.4.4 Authorization Plugin
    可以通过Authorization Plugin为认证后的用户授权,以下ActiveMQ配置文件的一个例子:

  1. <plugins>
  2. <jaasAuthenticationPlugin configuration="activemq-domain"/>
  3. <authorizationPlugin>
  4. <map>
  5. <authorizationMap>
  6. <authorizationEntries>
  7. <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
  8. <authorizationEntry queue="USERS.>" read="users" write="users" admin="users" />
  9. <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
  10. <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
  11. <authorizationEntry topic="USERS.>" read="users" write="users" admin="users" />
  12. <authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
  13. <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/>
  14. </authorizationEntries>
  15. </authorizationMap>
  16. </map>
  17. </authorizationPlugin>
  18. </plugins>

ActiveMQ in Action(4) - Security的更多相关文章

  1. 《ActiveMQ in Action》【PDF】下载

    内容介绍TheApache ActiveMQ message broker is an open source implementation ofthe Java Message Service sp ...

  2. ActiveMQ in Action(7) - Wildcards

    关键字: activemq 2.6.7 Wildcards    Wildcards用来支持联合的名字分层体系(federated name hierarchies).它不是JMS规范的一部分,而是A ...

  3. ActiveMQ in Action(6) - Features

    关键字: activemq 2.6 Features    ActiveMQ包含了很多功能强大的特性,下面简要介绍其中的几个.2.6.1 Exclusive Consumer    Queue中的消息 ...

  4. ActiveMQ in Action(5) - Clustering

    关键字: activemq 2.5 Clustering    ActiveMQ从多种不同的方面提供了集群的支持.2.5.1 Queue consumer clusters    ActiveMQ支持 ...

  5. ActiveMQ in Action(3) - Persistence

    关键字: activemq 2.3 Persistence2.3.1 AMQ Message Store    AMQ Message Store是ActiveMQ5.0缺省的持久化存储.Messag ...

  6. ActiveMQ in Action(2) - Transport

    关键字: activemq 2.2 Transport    ActiveMQ目前支持的transport有:VM Transport.TCP Transport.SSL Transport.Peer ...

  7. ActiveMQ in Action(1) - JMS

    关键字: activemq 1 JMS    在介绍ActiveMQ之前,首先简要介绍一下JMS规范.1.1 JMS的基本构件1.1.1 连接工厂    连接工厂是客户用来创建连接的对象,例如Acti ...

  8. 《ActiveMQ in Action》例子

    本章内容: 介绍本书中所有例子的使用场景 使用 Maven 编译.运行例子 例子中怎么使用 ActiveMQ 简介 ActiveMQ 不仅实现了 JMS 规范中定义的所有特性,也额外提供了一些特有且有 ...

  9. 4.3.5 使用Http:// (Https://)协议连接到ActiveMQ 2015年9月28日

    用到的几点地方: 1.服务器端 ActiveMQ的文件activemq.xml中,预先要定义好有关本协议http的传输连接器格式,抓图如下: 2.    然后,开启Eclipse环境,在publish ...

随机推荐

  1. win8 or win7安装ubuntu双系统

    安装双系统的效果 现在使用win和linux双系统,整个环境相当方便好用,比如在Linux系统上,仍能访问NTFS(win的文件系统格式)中的文件和文档,当然win下的一些像matlab.vs等是不能 ...

  2. 关于_cmd

    实际上是该方法名(@selector的名称). 比如: - (void)someCategoryMethod { NSString *string = objc_getAssociatedObject ...

  3. CodeForces 670C Cinema

    简单题. 统计一下懂每种语言的人分别有几个,然后$O(n)$扫一遍电影就可以得到答案了. #pragma comment(linker, "/STACK:1024000000,1024000 ...

  4. java实现的快速排序算法

    快速排序的原理:选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的).一般选择序列的第一个元素. 一次循环:从后往前比较,用基准值和最后一个值比较, ...

  5. 使用firbug调试程序写更高质量的代码设置方法

    在搜狐浏览器内输入about:config 在搜索栏中输入:strict 双击javascript.options.strict,将值变为true

  6. PHP奇怪现象

    <?php $a = 0.29; $b = (int)($a*100); echo $b; //输出28,PHP版本5.6.24 echo 0.1 + 0.2 - 0.3; //输出5.5511 ...

  7. Java. Warning – Build path specifies execution environment J2SE-1.5

    Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace th ...

  8. 比较C++中的4种类型转换方式(转自http://blog.csdn.net/hrbeuwhw/article/details/7884797)

    C++的四种cast操作符的区别 Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意? A:转换的含义是通 ...

  9. 淘淘商城_day06_课堂笔记

    今日大纲 实现单点登录系统 基于单点登录系统实现,用户的注册和登录 商品数据同步问题 问题 后台系统中将商品修改,前台系统没有进行数据的同步,导致前端系统不能够实时显示最新的数据. 解决 后台系统中商 ...

  10. 解决Fileupload 在IE 10 中需要双击的问题

    方法来自于:https://code.google.com/p/primefaces/issues/detail?id=5355 the oncomplete event is working for ...