Autorização do ActiveMQ

Se eu quiser implementar a autorização do JAAS no Apache ActiveMQ, preciso usar o plug-in no arquivo de configuração activemq.xml?

Desta forma, realmente não é bom, porque se eu quiser mudar a autorização, eu tenho que mudar o arquivo activemq.xml e reinicie o servidor para funcionar.

Existe alguma maneira que eu possa usar como autenticação JAAS, alterando outro arquivo de propriedades em vez do arquivo activemq.xml? Ou posso personalizar meu próprio plugin de autorização?

Obrigado.

Sempre que eu configurei a segurança do ActiveMQ, achei melhor usar o AuthorizationPlugin simples com curingas que indicam os destinos cobertos (e é por isso que é realmente útil usar convenções de nomenclatura para suas filas e tópicos). A ideia é que você defina um punhado de grupos de usuários e conceda a eles access a esses destinos.

A function de designar um grupo a partir de um nome de usuário é tratada por um dos plug-ins de autenticação – o plug-in JAAS é particularmente útil para externalizar essas informações fora da configuração do ActiveMQ em um diretório LDAP.

Confira o ActiveMQ Security Guide da FuseSource (registro obrigatório) para mais informações.

Atualização 2018-07-02 Guia de Segurança do ActiveMQ , agora localizado no redhat.

Eu encontrei alguns trechos de código que acabaram sendo tremendamente úteis para começar este assunto:

http://activemq.2283324.n4.nabble.com/Fully-programmatic-authorization-map-tp2344815.html

Aqui está como acabei usando (talvez não seja o melhor caminho):

 public class TestAuthorizationPlugin extends AuthorizationPlugin { 

Então:

 @Override public Broker installPlugin(Broker broker) { List entries = new ArrayList(); 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); } 

jar isso e enfie em /lib/ .

Modifique o activemq.xml:

       

Outro link útil para mais informações sobre o dev de plugin do autho:

http://mariuszprzydatek.com/2014/01/04/token-based-authentication-plugin-for-activemq/