前些天,我们系统需要使用ActiveMQ传递一些非常重要的消息,但是考虑到如果只是有个broker地址就能接收到消息感觉太不安全了,就给ActiveMQ加上了一些安全配置,如下:
1、控制台安全配置(也就是用户在网页浏览器打开192.168.10.40:8161/admin这个地址的时候,需要用户输入用户名/密码),打开conf/jetty.xml文件,找到
<bean id="securityConstraint" class="org.eclipse.jetty.http.security.Constraint">
<property name="name" value="BASIC" />
<property name="roles" value="admin" />
<property name="authenticate" value="false" />
</bean>
将“false”改为“true”即可。用户名和密码存放在conf/jetty-realm.properties文件中。
2、生产者和消费者连接ActiveMQ需要用户名、密码
(1)在工程的xml配置文件中配置连接工厂的用户名和密码:
<bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>${jms.brokerURL}</value>
</property>
<property name="useAsyncSend">
<value>true</value>
</property>
<property name="userName">
<value>${activemq.name}</value>
</property>
<property name="password">
<value>${activemq.pass}</value>
</property>
</bean>
</property>
</bean>
(2) 打开conf/activemq.xml文件,在<broker>标签里的<systemUsage>标签前加入:
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
注意必须在<systemUsage>标签前,否则启动ActiveMQ会报错。
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage percentOfJvmHeap="70" />
</memoryUsage>
<storeUsage>
<storeUsage limit="100 gb"/>
</storeUsage>
<tempUsage>
<tempUsage limit="50 gb"/>
</tempUsage>
</systemUsage>
</systemUsage>
用户名和密码存放在conf/credentials.properties文件中

7731

被折叠的 条评论
为什么被折叠?



