ActiveMQ入门教程(三)之安全认证

本文详细介绍ActiveMQ的安全配置方法,包括控制端和客户端的认证设置,通过修改配置文件实现用户权限管理,确保消息队列服务的安全。

ActiveMq安全认证

1.控制端安全配置(即网站控制台)

ActiveMQ目录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>

含义:

<property name="authenticate" value="true" />      true:需要认证; false:不需要认证

ActiveMQ目录conf下找到jetty-realm.properties

说明:

第一个admin,为认证用户名。 
第二个admin123,为认证密码。 
第三个admin,为角色。


(3).  重启ActiveMQ验证是否需要认证
重启activemq后,访问:http://127.0.0.1:8161/admin/,弹出http基本认证框,这时候认证生效。

登录成功,说明配置有效!!!

 

2.客户端安全配置(即程序调用)

上一个小节中,我们连接activemq是使用用户名和密码基本上是没有任何用处的,随便个用户名和密码都可以访问消息队列,这样的坏处是,只要有人知道了我们activemq服务器的ip和端口,就可以连上去消费掉我们的消息,这样非常的不安全,所以我们需要给activemq设置一个username和pasword;

上一节的代码:

//创建连接工厂,连接ActiveMQ服务的连接工厂
			//创建工厂,构造方法有三个参数,分别是用户名,密码,连接地址
			//无参构造,有默认的连接地址。本地连接
			//单参数构造,五无验证模式,没有用户的认证
			//三参数构造,有认证+指定地址。默认端口是61616.从ActiveMQ的conf/activemq.xml配置文件中查看
			factory = new ActiveMQConnectionFactory("admin","admin","tcp://192.168.0.32:61616");

第一种方式:

在conf下的activemq.xml的broker节点插入一个子节点如下:

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

 

配置完成后,重新启动activemq才能生效,接着我们启动TextConsumer.java(ActiveMq01模块的代码,可以从上一篇博客下载源码)

可以看到报了用户和密码非法异常!

我们改下连接方式:

factory = new ActiveMQConnectionFactory("loafer","123456","tcp://192.168.0.32:61616");

再次运行生产者和消费者,运行结果:

发现安全认证已经OK!

第二种方式:

在conf下的activemq.xml的broker节点插入一个子节点如下:

<!--开启安全认证-->
<plugins>
    <!--activemq在login.config文件里定义 -->
    <jaasAuthenticationPlugin configuration="activemq"/>
        <authorizationPlugin>
              <map>
                  <authorizationMap>
                       <authorizationEntries>
                       <!--  > 表示通配符、所有 admins:表示的是用户组不是用户    read表示读的权限,write表示写的权限,admin表示是否能创建-->
                          <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
                          <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
                          <authorizationEntry queue="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins" />
                          <authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins" />
                       </authorizationEntries>
                   </authorizationMap>
                </map>
      </authorizationPlugin>
</plugins>

conf/login.config文件

用户组配置-conf/groups.properties文件,主要配置用户名 

用户信息配置可在conf/users.properties文件中配置,主要配置用户名对应的密码

我们改下连接方式:

factory = new ActiveMQConnectionFactory("loafer","123456","tcp://192.168.0.32:61616");

再次运行生产者和消费者,运行结果:

发现安全认证也OK!

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值