JMS-ActiveMQ学习-5 ActiveMQ的安全机制

一、控制台安全(8161)

1.修改conf/jetty.xml文件中的authenticate的两个值为true

2.修改conf/jetty-realm.properties文件中的用户名:密码:角色,第二项为密码

admin: admin, admin
user: user, user

二、服务器安全(61616)

两种方式设置:

activemq.xml文件中记录着用户名和密码

1.方式一:conf/activemq.xml添加plugins关于密码的设置:

在<broker>节点里面<systemUsage>节点前面添加如下

复制代码
复制代码
<plugins> 
   <simpleAuthenticationPlugin> 
         <users> 
              <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/> 
         </users> 
   </simpleAuthenticationPlugin> 
</plugins> 
复制代码

 

添加完用户名和密码之后项目中如何使用呢?

定义new ActiveMQConntectionFactory的时候使用传用户名密码的构造方法

或者

有spring配置文件的在配置连接工厂的时候设置属性property userName和password

或者

springboot项目中在application.properties文件中添加:

  spring.activemq.user=userName

  spring.activemq.password=123

2.方式二:JAAS身份验证和授权

ActiveMQ加入JAAS身份验证,修改4个文件:

activemq.xml文件中添加:

在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

 

 

 

posted on   companion  阅读(156)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示