ActiveMQ安全权限设置

目录

login.config

users.properties

groups.properties

activemq.xml

queue/topic

read/write/admin


在使用ActiveMQ的时候,一般会对其分配用户和角色来做基本的权限验证,本博文选择自带的JAAS Plugin来完成。本文中ActiveMQ版本选择5.16.0

在LINUX上下载解压完ActiveMQ之后进入到conf目录下,其中有四个文件需要特别关注:

  1. login.config  - 登录配置
  2. users.properties - 用户密码配置
  3. groups.properties - 用户组配置
  4. activemq.xml - ActiveMQ实例配置

login.config

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

在没有设置java.security.auth.login.config属性时,会默认读取这个文件作为配置;可以看到该文件中,先是定义了一个节点名activemq,第二行表示使用的是PropertiesLoginModule来获取认证信息(其他的方式请参考官网),顾名思义就是从配置文件中读取,所以下面就配置了使用users.properties文件作为用户密码配置,使用groups.properties文件作为用户组配置。默认在当前文件同一目录中查找这两个文件。reload=true,表示可以在运行过程中更改users.properties,groups.properties文件内容,并动态刷新;不要忘了最后的 ";"

users.properties

## username = password
admin=admin
wuser=wuser
ruser=ruser

在该文件中定义用户,格式:用户名=密码;

groups.properties

## rolename = username1,username2
admins=admin
writes=wuser
reads=ruser

在该文件中定义角色,格式:角色名=用户1,用户2...

activemq.xml

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

	<plugins>

	<!--  use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
		<jaasAuthenticationPlugin configuration="activemq" />
	<!--  lets configure a destination based authorization mechanism -->
		<authorizationPlugin>
		   <map>
			<authorizationMap>
				<authorizationEntries>
					<authorizationEntry topic=">" read="reads,writes" write="writes" admin="writes,admins" />
					<authorizationEntry queue=">" read="reads,writes" write="writes" admin="writes,admins" />
					<authorizationEntry topic="ActiveMQ.Advisory.>" read="reads,writes,admins" write="reads,writes,admins" admin="reads,writes,admins"/>
					<authorizationEntry queue="ActiveMQ.Advisory.>" read="reads,writes,admins" write="reads,writes,admins" admin="reads,writes,admins"/>
				</authorizationEntries>
			</authorizationMap>
		   </map>
		</authorizationPlugin>
	</plugins>

主要是plugins节点,将其放置在persistenceAdapter节点下面,用于配置权限映射。

其中jaasAuthenticationPlugin的configuration属性必须要在login.config文件中存在,上面介绍login.config文件时,定义了一个activemq的节点,所以此处同样需要设置为activemq。

下面的authorizationEntry节点中

queue/topic

代表权限是作用在queue还是topic上,其值是一个通配符表达式,通配符表达式如下,用于匹配queue/topic的名字。

.分隔符;分隔名字,*,>
*匹配任何字符
>任何字符直到末尾

例如:

仅单个">" 和单个"*"都表示匹配全部

"PREFIX.>"或"PREFIX.*"都表示以PREFIX开头的中间以"."分隔;可以匹配: PREFIX , PREFIX.1 , PREFIX.1.2 ;无法匹配: PREFIX1

"PREFIX.*.SUFFIX"表示以PREFIX开头,以SUFFIX结尾;可以匹配:PREFIX.1.SUFFIX;无法匹配:PREFIX.1.2.SUFFIX,PREFIX.1.SUFFIX.2

注意,如果要使用">",那么一定要将其放在表达式的最后。具体信息可以访问官网

read/write/admin

属性描述
read查看和消费目的地数据
write往目的地发送数据
admin创建目的地

 

read/write/admin 其值是角色名,多个使用","分隔,角色名在groups.properties文件中配置。注意:如果目的地还没创建出来的话,拥有write权限的角色是无法往该目的地发送数据的。


以上,就是ActiveMQ的权限验证配置。如果是配置ActiveMQ WEB端的权限,则需要在jetty.xml 和 jetty-realm.xml中进行配置,这里就不再赘述了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值