消息队列ActiveMQ(二)——安全配置

ActiveMQ分为2个安全配置:一个是Web控制台的安全配置;另外一个是对于队列/主题的访问安全配置。

Web控制台的安全配置

打开conf/jetty.xml文件,找到

<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="user,admin" />
        <!-- set authenticate=false to disable login -->
        <!-- 这里开启登录 -->
        <property name="authenticate" value="true" />
    </bean>
    <bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint">
        <property name="name" value="BASIC" />
        <property name="roles" value="admin" />
         <!-- set authenticate=false to disable login -->
         <!-- 这里开启登录 -->
        <property name="authenticate" value="true" />
    </bean>

用户名密码保存在conf/jetty-realm.properties文件中

admin: admin, admin
user: user, user

用户格式定义: 用户名:密码[,角色…]

对于队列/主题的访问安全配置

客户端三种权限:read(读取队列),write(写入队列),admin(主题不存在时是否可以创建队列)

有两种安全配置策略:Simple Authentication(简单的身份验证)JAAS身份验证

Simple Authentication(简单的身份验证)

在conf/activemq.xml文件中加入以下内容,如配置了systemUsage,应该放到systemUsage前

<plugins>    
        <!-- Configure authentication; Username, passwords and groups -->    
            <simpleAuthenticationPlugin>    
                <users>    
                    <authenticationUser username="admin" password="admin"   groups="users,admins"/>    
                    <authenticationUser username="user" password="user"  groups="users"/>    
                    <authenticationUser username="guest" password="${guest.password}" groups="guests"/>    
                </users>    
            </simpleAuthenticationPlugin>    
        </plugins>

占位引用可在conf/credential.properties中配置

activemq.username=system
activemq.password=manager
guest.password=password

配置好后,创建ActiveMQConnectionFactory需要用户名密码

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(username,password,url);  

JAAS身份验证

在conf/activemq.xml文件中加入以下内容,如配置了systemUsage,应该放到systemUsage前

<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>
                        <!-->表示通配符,例如USERS.>表示以USERS.开头的主题,>表示所有主题,read表示读的权限,write表示写的权限,admin表示是否能创建-->  
                            <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />    
                            <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
                            <authorizationEntry queue="ActiveMQ.Advisory.>" read="tests" write="tests" admin="tests" />    
                            <authorizationEntry topic="ActiveMQ.Advisory.>" read="tests" write="tests" admin="tests" />

                            <!-- tests组具有tests.>的queue和topic的所有权限,没有其他的权限 -->
                            <authorizationEntry queue="test.>" read="tests" write="tests" admin="tests" />    
                            <authorizationEntry topic="test.>" read="tests" write="tests" admin="tests" />
                        </authorizationEntries>    
                    </authorizationMap>    
                </map>    
            </authorizationPlugin>
        </plugins>

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

用户名、密码文件users.properties

#用户名=密码
admin=admin
test=123

分组文件groups.properties

#角色=用户1,用户2
admins=admin
tests=test

注意:configuration=”activemq”,这里的名字与login.config中的名字对应上

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值