ActiveMq认证与授权配置

一:认证预授权

activemq作为主流的消息中间件,其资源及论坛还是比较多的,但是针对认证与授权都是前篇一律。在此通过阅读官方文档及实例测试详解验证与授权的配置

1、系统环境CentOs6.5,首先从官网下载activemq的安装包,解压运行即可,默认使用端口为8161(管理端口)、61616(用于创建消息与消费消息)。

2、配置过程如下

先编写conf/activemq.xml文件

	<persistenceAdapter>
            <kahaDB directory="${activemq.data}/kahadb"/>
        </persistenceAdapter>

        <!-- add authentication -->

        <plugins>
                <simpleAuthenticationPlugin>
                        <users>
                                <authenticationUser username="test" password="test" groups="users,admins"/>
                        </users>
                </simpleAuthenticationPlugin>


                <!-- 通过jaas进行授权与验证 -->
                <jaasAuthenticationPlugin configuration="activemq-domain"/>

                <authorizationPlugin>
                        <map>
                                <authorizationMap>
                                        <authorizationEntries>
                                                <authorizationEntry queue=">" read="admins" write="admins" admin="admins"/>
                                                <authorizationEntry queue="TEST-QUEUE.>" read="users" write="users" admin="users, admins"/>
                                                <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users"/>
                                                <authorizationEntry queue="ActiveMQ.Advisory.>" read="guests, users" write="guests,users" admin="guests,users"/>
                                                <authorizationEntry topic=">" read="admins" write="admins" admin="admins"/>
                                                <authorizationEntry topic="TEST-TOPIC.>" read="users" write="users" admin="users, admins"/>
                                                <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>

                                        <tempDestinationAuthorizationEntry>
                                                <tempDestinationAuthorizationEntry read="tempDestinationAdmins" write="tempDestinationAdmins" admin="tempDestinationAdm
ins"/>
                                        </tempDestinationAuthorizationEntry>
                                </authorizationMap>
                        </map>
                </authorizationPlugin>
        </plugins><persistenceAdapter>
            <kahaDB directory="${activemq.data}/kahadb"/>
        </persistenceAdapter>

        <!-- add authentication -->

        <plugins>
                <simpleAuthenticationPlugin>
                        <users>
                                <authenticationUser username="test" password="test" groups="users,admins"/>
                        </users>
                </simpleAuthenticationPlugin>


                <!-- 通过jaas进行授权与验证 -->
                <jaasAuthenticationPlugin configuration="activemq-domain"/>

                <authorizationPlugin>
                        <map>
                                <authorizationMap>
                                        <authorizationEntries>
                                                <authorizationEntry queue=">" read="admins" write="admins" admin="admins"/>
                                                <authorizationEntry queue="TEST-QUEUE.>" read="users" write="users" admin="users, admins"/>
                                                <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users"/>
                                                <authorizationEntry queue="ActiveMQ.Advisory.>" read="guests, users" write="guests,users" admin="guests,users"/>
                                                <authorizationEntry topic=">" read="admins" write="admins" admin="admins"/>
                                                <authorizationEntry topic="TEST-TOPIC.>" read="users" write="users" admin="users, admins"/>
                                                <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>

                                        <tempDestinationAuthorizationEntry>
                                                <tempDestinationAuthorizationEntry read="tempDestinationAdmins" write="tempDestinationAdmins" admin="tempDestinationAdm
ins"/>
                                        </tempDestinationAuthorizationEntry>
                                </authorizationMap>
                        </map>
                </authorizationPlugin>
        </plugins>

添加在<broker>节点下添加<plugins> 节点,在节点下添加如下节点<simpleAuthenticationPlugin>、<jaasAuthenticationPlugin"/>、<authorizationPlugin>。

<simpleAuthenticationPlugin>节点通过子节点定义用户、组信息

<authenticationUser username="system" password="manager" groups="users,admins"/>

其中groups信息用于验证授权,用户信息可以从conf/credentials.properties中通过${}进行获得。

<jaasAuthenticationPlugin"/>节点通过Java Authentication Authorization Service进行用户验证及授权操作

<jaasAuthenticationPlugin configuration="activemq-domain"/>

其中configuration=“activemq-domain”中的activemq-domain要与conf/login.config中节点名称对应,内容如下

activemq-domain {
        org.apache.activemq.jaas.PropertiesLoginModule required
        org.apache.activemq.jaas.properties.user="users.properties"
        org.apache.activemq.jaas.properties.group="groups.properties"
        reload=true;
};

通过上述配置可以知道,此时用户信息及组信息是从users.properties和groups.properties文件中进行加载的,其中reload=true表示,更新用用户信息可以动态加载。
 

<authorizationPlugin>节点用于通过jaas进行用户的授权,其中mq的权限有三种

read :destination中消息的浏览及消费

write :destination中消息的创建

admin :destiantion中最高权限,任意消息的管理

用户权限配置

<authorizationEntry queue=">" read="admins" write="admins" admin="admins"/>
<authorizationEntry topic="USERS.>" read="users" write="users" admin="users"/>

 消息有两种queue和topic,其中read、write、admin用户指定用户组,其中conf/groups.properties中文件内容如下

admins=admin
users=admin,develop,sslclient
tempDestinationAdmins=system,user,sslclient,client,broker1,broker2
guests=guest

等号前时候组名,等号后是用户列表,多个用户之间用","分割。

二:持久到Mysql中

将mysql的mysql-connector-java-5.1.35.jar拷贝到activemq的lib目录下,

修改conf/activemq.xml文件,在<broker>节点外添加如下配置

<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
  <property name="url" value="jdbc:mysql://127.0.0.1:3306/activemq?relaxAutoCommit=true"/>
  <property name="username" value="dzc4test"/>
  <property name="password" value="dzc4test@123"/>
  <property name="poolPreparedStatements" value="true"/>
</bean>

这里注意class属性的设置,早期版本的mq使用的org.apache.commons.dbcp.BasicDataSource,新版本的mq使用的org.apache.commons.dbcp2.BasicDataSource

更新<broker>节点中的<persistenceAdapter>信息添加如下信息

 <jdbcPersistenceAdapter dataSource="#mysql-ds" />

总结:

1、 <jaasAuthenticationPlugin configuration="activemq-domain"/>优先级高于<simpleAuthenticationPlugin>,如果配置了 <jaasAuthenticationPlugin configuration="activemq-domain"/>那么用户的验证授权信息将从user.properties和group.properties文件中进行加载;如果只配置<simpleAuthenticationPlugin>那么用户的验证与授权信息直接从子节点authenticationUser中进行定义,此时用户的信息也可以存放在conf/credentials.properties文件中,通过${}进行加载即可。

2、如果配置<jaasAuthenticationPlugin configuration="activemq-domain"/>那么conf/login.config中节点名称一定要为activemq-domain,否则在发送或是接收消息时会抛出

Caused by: javax.security.auth.login.LoginException: No LoginModules configured for activemq-domain

异常。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装和配置ActiveMQ,请按照以下步骤进行操作: 1. 下载安装包:访问ActiveMQ官方网站(http://activemq.apache.org/components/classic/download/),根据您的操作系统选择合适的版本进行下载。 2. 解压缩安装包:将下载的安装包解压到您选择的目录。 3. 启动ActiveMQ:进入解压后的目录中的bin/win64目录,找到activemq.bat文件,双击运行或在命令行中执行此文件。 4. 配置ActiveMQ:启动成功后,您可以使用命令行窗口打开活动MQ管理控制台。在浏览器中输入http://localhost:8161,进入管理页面。 5. 配置队列和主题:在管理页面中,您可以创建和配置队列和主题以满足您的需求。通过添加新的队列和主题来实现消息传递和发布/订阅模式。 6. 测试与使用:您现在可以使用ActiveMQ来发送和接收消息。您可以使用ActiveMQJava API或其他客户端库来编写代码并与ActiveMQ进行通信。 请注意,这只是一个简单的概述,您可能需要参考ActiveMQ的官方文档或其他资源以获取更详细的安装和配置说明。希望这些步骤能帮助您成功安装和配置ActiveMQ。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ActiveMQ的安装与使用](https://blog.csdn.net/qq_29651203/article/details/108487924)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [ActiveMQ安装使用与配置说明](https://blog.csdn.net/zgphacker2010/article/details/127140614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值