ActiveMQ教程(二)-安全策略

沒有配置消息服務器安全策略,只要知曉服務器地址、端口,就可以通過程序訪問。

$ActiveMQ,表示ActiveMQ的安裝目錄。

控制檯安全配置

$ActiveMQ/conf/jetty.xml,該文件開啓權限,將property標籤name屬性爲authenticate的屬性value=”false”改爲”true”。

<bean id="securityConstraint" class="org.eclipse.jetty.http.security.Constraint">    
        <property name="name" value="BASIC" />    
        <property name="roles" value="admin" />    
        <property name="authenticate" value="true" />    
</bean>  

$ActiveMQ/conf/jetty-realm.properties,控制檯登錄的同戶名密碼。

# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
admin: admin, admin

用戶格式定義: 用戶名:密碼[,角色…] , 以上配置就是用戶名爲admin,密碼爲admin,角色爲admin的用戶。

JMS安全配置

官方文檔對隊列操作的權限這樣描述:
read:You can browse and consume from the destination。
write:You can send messages to the destination。
admin:You can lazily create the destination if it does not yet exist. This allows you fine grained control over which new destinations can be dynamically created in what part of the queue/topic hierarchy。

其實理解起來非常簡單,read、write也就是擁有往隊列存放數據和從隊列讀取數據的操作權限。admin顧名思義就是除了read、write外,如果鏈接消息服務器。操作指定隊列時,如果該隊列不存在,則會自動創建一個隊列。

簡單的身份驗證(Simple Authentication Plugin)

$ActiveMQ/conf/activemq.xml文件中加入配置內容

<simpleAuthenticationPlugin>
    <users>
        <authenticationUser username="system" password="manager"
            groups="users,admins"/>
        <authenticationUser username="user" password="${user.password}"
            groups="users"/>
        <authenticationUser username="guest" password="password" groups="guests"/>
    </users>
</simpleAuthenticationPlugin>

如配置了systemUsage,以上配置片段應該放到systemUsage之前。
user.password ActiveMQ/conf/credential.properties中配置。

JAAS身份驗證

$ActiveMQ/conf/activemq.xml文件中加入配置內容

<plugins>
   <jaasAuthenticationPlugin configuration="activemq-domain" />
   <authorizationPlugin>
       <map>
         <authorizationMap>
           <authorizationEntries>
             <authorizationEntry queue=">" read="users" write="users" admin="users" />
             <authorizationEntry queue="TEST.Q" read="users" write="users" admin="users" />
             <authorizationEntry topic="ActiveMQ.Advisory.>" read="all" write="all" admin="all"/>
           </authorizationEntries>
           <tempDestinationAuthorizationEntry>
             <tempDestinationAuthorizationEntry read="admin" write="admin" admin="admin"/>
           </tempDestinationAuthorizationEntry>
        </authorizationMap>
      </map>
   </authorizationPlugin>
  </plugins>

在配置中 “>” 代表所有的意思. 而 “ActiveMQ.Advisory.>” 則代表.名爲 “ActiveMQ.Advisory.”下的所有。

相關Properties配置

login.properties

activemq-domain {
    org.apache.activemq.jaas.PropertiesLoginModule required
        debug=true
        org.apache.activemq.jaas.properties.user="org/apache/activemq/security/users.properties"
        org.apache.activemq.jaas.properties.group="org/apache/activemq/security/groups.properties";
};

users.properties

admin=admin

以上properties文件配置,用戶名=密碼的格式。admin用戶,密碼爲admin。

group.properties

admins=admin

以上properties文件配置,組名=用戶名。admins組,包含用戶admin。
還有users組,包含普通用戶。guest組,包含訪客。

發佈了52 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章