Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

          2.4 Security
          ??? ActiveMQ支持可插拔的安全機制,用以在不同的provider之間切換。
          2.4.1 Simple Authentication Plugin
          ??? Simple Authentication Plugin適用于簡單的認證需求,或者用于建立測試環境。它允許在XML配置文件中指定用戶、用戶組和密碼等信息。以下是ActiveMQ配置的一個例子:

          Xml代碼
          1. < plugins > ??
          2. ??...??
          3. ??<simpleAuthenticationPlugin>??
          4. ????<users>??
          5. ??????<authenticationUser?username="system"?password="manager"?groups="users,admins"/>??
          6. ??????<authenticationUser?username="user"?password="password"?groups="users"/>??
          7. ??????<authenticationUser?username="guest"?password="password"?groups="guests"/>??
          8. ????</users>??
          9. ??</simpleAuthenticationPlugin>??
          10. </ plugins > ??

          ?

          2.4.2 JAAS Authentication Plugin
          ??? JAAS Authentication Plugin依賴標準的JAAS機制來實現認證。通常情況下,你需要通過設置java.security.auth.login.config系統屬性來 配置login modules的配置文件。如果沒有指定這個系統屬性,那么JAAS Authentication Plugin會缺省使用login.config作為文件名。以下是一個login.config文件的例子:

          activemq-domain {
          ??? org.apache.activemq.jaas.PropertiesLoginModule required debug=true???????? org.apache.activemq.jaas.properties.user="users.properties"???????? org.apache.activemq.jaas.properties.group="groups.properties";
          };
          ??? 這個login.config文件中設置了兩個屬性:org.apache.activemq.jaas.properties.user和 org.apache.activemq.jaas.properties.group分別用來指向user.properties和 group.properties文件。需要注意的是,PropertiesLoginModule使用本地文件的查找方式,而且查找時采用的base directory是login.config文件所在的目錄。因此這個login.config說明user.properties和 group.properties文件存放在跟login.config文件相同的目錄里。
          ??? 以下是ActiveMQ配置的一個例子:

          Xml代碼
          1. < plugins > ??
          2. ??...??
          3. ??<jaasAuthenticationPlugin?configuration="activemq-domain"?/>??
          4. </ plugins > ??

          ??? 基于以上的配置,在JAAS的LoginContext中會使用activemq-domain中配置的PropertiesLoginModule來進行登陸。
          ??? ActiveMQ JAAS還支持LDAPLoginModule、CertificateLoginModule、TextFileCertificateLoginModule等login module。

          ?

          2.4.3 Custom Authentication Implementation
          ??? 可以通過編碼的方式為ActiveMQ增加認證功能。例如編寫一個類繼承自XBeanBrokerService。

          Java代碼
          1. package ?com.yourpackage;??
          2. ??
          3. import ?java.net.URI;??
          4. import ?java.util.HashMap;??
          5. import ?java.util.Map;??
          6. ??
          7. import ?org.apache.activemq.broker.Broker;??
          8. import ?org.apache.activemq.broker.BrokerFactory;??
          9. import ?org.apache.activemq.broker.BrokerService;??
          10. import ?org.apache.activemq.security.SimpleAuthenticationBroker;??
          11. import ?org.apache.activemq.xbean.XBeanBrokerService;??
          12. ??
          13. public ? class ?SimpleAuthBroker? extends ?XBeanBrokerService?{??
          14. ????//??
          15. ????private?String?user;??
          16. ????private?String?password;??
          17. ??????
          18. ????@SuppressWarnings("unchecked")??
          19. ????protected?Broker?addInterceptors(Broker?broker)?throws?Exception?{??
          20. ????????broker?=?super.addInterceptors(broker);??
          21. ????????Map?passwords?=?new?HashMap();??
          22. ????????passwords.put(getUser(),?getPassword());??
          23. ????????broker?=?new?SimpleAuthenticationBroker(broker,?passwords,?new?HashMap());??
          24. ????????return?broker;??
          25. ????}??
          26. ??????
          27. ????public?String?getUser()?{??
          28. ????????return?user;??
          29. ????}??
          30. ??
          31. ????public?void?setUser(String?user)?{??
          32. ????????this.user?=?user;??
          33. ????}??
          34. ??
          35. ????public?String?getPassword()?{??
          36. ????????return?password;??
          37. ????}??
          38. ??
          39. ????public?void?setPassword(String?password)?{??
          40. ????????this.password?=?password;??
          41. ????}??
          42. }??
          ??? 以下是ActiveMQ配置文件的一個例子:
          Xml代碼
          1. <beans>??
          2. ??…??
          3. ??<auth:SimpleAuthBroker??
          4. ????xmlns:auth="java://com.yourpackage"??
          5. ????xmlns="http://activemq.org/config/1.0"?brokerName="SimpleAuthBroker1"?user="user"?password="password"?useJmx="true">??
          6. ????
          7. ????<transportConnectors>??
          8. ??????<transportConnector?uri="tcp://localhost:61616"/>??
          9. ????</transportConnectors>??
          10. ??</auth:SimpleAuthBroker>??
          11. ??…??
          12. </beans>??

          ?? 在這個配置文件中增加了一個namespace auth,用于指向之前編寫的哪個類。同時為SimpleAuthBroker注入了兩個屬性值user和password,因此在被 SimpleAuthBroker改寫的addInterceptors方法里,可以使用這兩個屬性進行認證了。ActiveMQ提供的 SimpleAuthenticationBroker類繼承自BrokerFilter(可以簡單的看成是Broker的Adaptor),它的構造函 數中的兩個Map分別是userPasswords和userGroups。 SimpleAuthenticationBroker在 addConnection方法中使用userPasswords進行認證,同時會把userGroups的信息保存到 ConnectionContext中 。

          ?

          2.4.4 Authorization Plugin
          ??? 可以通過Authorization Plugin為認證后的用戶授權,以下ActiveMQ配置文件的一個例子:

          Xml代碼
          1. <plugins>??
          2. ??<jaasAuthenticationPlugin?configuration="activemq-domain"/>??
          3. ????
          4. ??<authorizationPlugin>??
          5. ????<map>??
          6. ??????<authorizationMap>??
          7. ????????<authorizationEntries>??
          8. ??????????<authorizationEntry?queue=">"?read="admins"?write="admins"?admin="admins"?/>??
          9. ??????????<authorizationEntry?queue="USERS.>"?read="users"?write="users"?admin="users"?/>??
          10. ??????????<authorizationEntry?queue="GUEST.>"?read="guests"?write="guests,users"?admin="guests,users"?/>??
          11. ????????????
          12. ??????????<authorizationEntry?topic=">"?read="admins"?write="admins"?admin="admins"?/>??
          13. ??????????<authorizationEntry?topic="USERS.>"?read="users"?write="users"?admin="users"?/>??
          14. ??????????<authorizationEntry?topic="GUEST.>"?read="guests"?write="guests,users"?admin="guests,users"?/>??
          15. ??
          16. ??????????<authorizationEntry?topic="ActiveMQ.Advisory.>"?read="guests,users"?write="guests,users"?admin="guests,users"/>??
          17. ????????</authorizationEntries>??
          18. ??????</authorizationMap>??
          19. ????</map>??
          20. ??</authorizationPlugin>??
          21. </plugins>
          posted on 2010-09-01 22:27 禮物 閱讀(703) 評論(0)  編輯  收藏 所屬分類: ActiveMQ
          主站蜘蛛池模板: 资阳市| 天祝| 黄浦区| 昌吉市| 临夏市| 汤原县| 洛浦县| 郎溪县| 饶平县| 宣城市| 海淀区| 淮安市| 道孚县| 阿坝| 湾仔区| 盱眙县| 洪泽县| 兴国县| 榆社县| 佛教| 彰化县| 丰宁| 翁源县| 临湘市| 平谷区| 龙门县| 如东县| 本溪| 临沂市| 和林格尔县| 新郑市| 赤城县| 宜宾市| 辽中县| 定结县| 科技| 阿拉善左旗| 连州市| 区。| 勐海县| 紫阳县|