[英]ActiveMQ authorization
如果要在Apache ActiveMQ上實現JAAS授權,是否必須使用activemq.xml配置文件中的插件?
這種方式確實不好,因為如果要更改授權,則必須更改activemq.xml文件並重新啟動服務器才能正常工作。
是否可以通過更改其他屬性文件而不是activemq.xml文件來使用類似JAAS身份驗證的方法? 還是可以自定義我自己的授權插件?
謝謝。
每當我設置ActiveMQ安全性時,我都發現最好使用帶通配符的普通AuthorizationPlugin來表示所覆蓋的目的地(這就是為什么在隊列和主題中使用命名約定確實很方便)的原因。 這樣的想法是,您定義了少數用戶組,並授予他們訪問這些目的地的權限。
從用戶名分配組的角色由身份驗證插件之一處理-JAAS插件對於在LDAP目錄中的ActiveMQ配置之外外部化此信息特別有用。
請查閱FuseSource的《 ActiveMQ安全指南》 (需要注冊)以獲取更多信息。
更新2018-07-02 ActiveMQ安全指南 ,現在位於redhat上。
我發現了一些代碼片段,這些片段最終對入門這個主題非常有幫助:
http://activemq.2283324.n4.nabble.com/Fully-programmatic-authorization-map-tp2344815.html
這是我最終使用它的方式(可能不是最好的方法):
public class TestAuthorizationPlugin extends AuthorizationPlugin {
然后:
@Override
public Broker installPlugin(Broker broker) {
List<DestinationMapEntry> entries = new ArrayList<DestinationMapEntry>();
try {
entries.add(makeTopicAuthorization("groupA.topic", "groupA", "groupA", "groupA"));
entries.add(makeQueueAuthorization("groupA.queue", "groupA", "groupA", "groupA"));
entries.add(makeQueueAuthorization("groupB.queue", "groupB", "groupB", "groupB"));
entries.add(makeTopicAuthorization("ActiveMQ.Advisory.>", "all", "all", "all"));
AuthorizationMap authMap = new DefaultAuthorizationMap(entries);
return new AuthorizationBroker(broker, authMap);
} catch (Exception e) {
LOGGER.error(e);
}
return new AuthorizationBroker(broker, null);
}
將其罐入並粘貼在<activemq_home>/lib/
。
修改activemq.xml:
<plugins>
<!-- use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
<jaasAuthenticationPlugin configuration="activemq" />
<!-- Authorization control -->
<bean xmlns="http://www.springframework.org/schema/beans" class="com.blackstrype.activemq.security.TestAuthorizationPlugin"/>
</plugins>
有關autho插件dev的更多信息的另一個有用鏈接:
http://mariuszprzydatek.com/2014/01/04/token-based-authentication-plugin-for-activemq/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.