ActiveMq 安全分为两块
一、控制台安全设置
1.1 ActiveMQ使用的是jetty服务器, 打开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="false" 改为"true"(比较新的版本已经默认设置为了true)
1.2 控制台的登录用户名密码保存在conf/jetty-realm.properties文件中,内容如下:
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
admin: admin, admin
值得注意的是 用户名和密码的格式是 用户名 : 密码 ,角色名
修改后,打开 http://localhost:8616 就需要设置的用户名和密码了
二、消息的生产者和消费者的安全设置
这个比较坑的是,以为设置上前面的用户名密码后,就可以了,实际JAVA连的时候 ,还是可以使用默认的用户名密码
2.1 找到conf/activemq.xml,在 <broker> 的最后配置如下代码
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="parry" password="parry123" groups="user,admin"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
后面的组,可以随便写,具体也不知道怎么用,只最简单的解决问题。重启后,使用JAVA连接就需要用户名和密码了
2.2 发现设置了消息安全认证后,登陆8161WEB控制台不能操作队列了,接下来找到conf/credentials.properties 进行修改
#原来的备份
#activemq.username=system
#activemq.password=manager
#修改为正确的密码
activemq.username=parry
activemq.password=parry123
guest.password=password
完事了, 网上找了好办天,才找到解决方法,记录一下。