Web 控制臺安全
1、管理后臺不要對外公開,不能讓外網訪問
例如禁用端口號等
2、設置后臺訪問的密碼,密碼要復雜一點,不要公開
● /conf/jetty.xml將配置項authenticate值改為 true,現在ActiveMQ新版本默認authenticate是設置的true,所以也不用改
● /conf/jetty-realm.properties 設置用戶名和密碼,格式為-->用戶名:密碼,角色名
● 修改完畢后,重啟ActiveMQ,用新密碼登錄測試效果
消息服務器Broker安全
主要是添加訪問的用戶名和密碼:實現方式有兩種:
<plugins>
<simpleAuthenticationPlugin>
<users>
<!--一般我們就配置第一個即可,下面兩個了解-->
<authenticationUser username="system" password="123456" groups="users,admins"/>
<authenticationUser username="user" password="123456" groups="users"/>
<authenticationUser username="guest" password="123456" groups="guests"/>
</users>
</simpleAuthenticationPlugin>
</plugins>
案例演示步驟
(1) 修改conf/activemq.xml文件
(2) 重啟ActiveMQ服務
(3) 基于JMS開發的消息傳送需要修改的地方
修改11-activemq-java項目中,涉及工廠創建的代碼
public static final String USER_NAME = "system";
public static final String PASSWORD = "123456";
//1 .創建一個連接工廠
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(USER_NAME,PASSWORD,BROKER_URL);
(4) 集成Spring框架需要修改的地方
修改12-activemq-spring-*下的applicationContext-jms.xml
<!-- 配置一個連接工廠 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.235.128:61616"/>
<property name="userName" value="system"/>
<property name="password" value="123456"/>
</bean>
(5) 集成SpringBoot框架需要修改的地方
修改13-activemq-boot-*中SpringBoot的核心配置文件
# 用戶名
spring.activemq.user=system
# 密碼
spring.activemq.password=123456
2、使用JAAS身份驗證和授權
Java Authentication Authorization Service(JAAS,Java驗證和授權服務),它可以通過插件的方式集成到你的應用程序中,提供驗證和授權服務。我們在開發的時候基本上不會用到這種方式,ActiveMQ集成了這種驗證方式,所以我們直接配置使用即可。
注意:ActiveMQ配置文件如果有中文,有的時候會報錯,所以我們在配置的時候將中文注釋刪除掉
ActiveMQ加入JAAS身份驗證,共需要對4個文件進行配置:
● activemq.xml
● login.config
● groups.properties
● users.properties
(1) 在conf/activemq.xml文件中加上
如果配置以下內容,需要將第一種方式配置的內容刪除掉
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="admins" write="admins" admin="admins" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins" />
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
(2) 配置conf/login.config(默認是正確的,所以不需要修改)
注意:activemq名字和activemq.xml配置的名字要一直
ctivemq {
org.apache.activemq.jaas.PropertiesLoginModule required
org.apache.activemq.jaas.properties.user="users.properties"
org.apache.activemq.jaas.properties.group="groups.properties";
};
(3) 配置conf/groups.properties
#group=userName
admins=system
(4) 配置conf/users.properties
#userName=password
system=123456