activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Casey <>
Subject Re: Fully programmatic authorization map
Date Thu, 20 May 2010 12:34:04 GMT
Hi Jim,

What Dejan has pointed you at is the classes that have all the various
plugin methods for doing Auth in ActiveMQ by inserting a Broker object
into the chain which is called during a connection.  It would be
possible to write a custom Broker subclass here that does what you
want, but I think it would be easier inside JAAS.

What I'd suggest is you use the standard
JaasCettificateAuthenticationPlugin and do the work in a JAAS plugin.

The JAAS plugins are in

I would suggest to create a subclass of CertificateLoginModule and
override the getUserNameForCertificate method to extract and return
the CN.  If you look at you can
see the logic it uses to extract the DN and match against entries in
the file - you would just need to write a simpler version which just
pulls out the CN from the client DN. Then you hook it into ActiveMQ
via a login.config file pointing at your custom class.

Let me know if this makes sense or if you need any more info.



On 20 May 2010 12:14, Dejan Bosanac <> wrote:
> Hi Jim,
> the best way is to look at the source code of the current plugin
> implementation.
> You can find it in package.
> For a quick preview, you can use this URL:
> Cheers
> --
> Dejan Bosanac -
> Open Source Integration -
> ActiveMQ in Action -
> Blog -
> On Wed, May 19, 2010 at 2:33 PM, Jim Lloyd <>wrote:
>> I'd like to implement an authorization plugin that would allow me to
>> implement a fully automatic authorization policy. Here's an outline of what
>> I want:
>> We have a broker that is a hub in a hub & spoke topology network of
>> brokers.
>> A connections to this hub broker are via SSL and the hub broker requires
>> SSL
>> client authentication. We require the client certificates to always be of a
>> form where the Common Name (CN) of the certificate defines the user. So,
>> for
>> example, if we instead used a jaas.TextFileCertificateLoginModule the
>> file would look like this:
>> user1=CN=user1,O=Silver Tail Systems,ST=California,C=US
>> userFoo=CN=userFoo,O=Silver Tail Systems,ST=California,C=US
>> ...
>> userZeta=CN=userZeta,O=Silver Tail Systems,ST=California,C=US
>> Meanwhile, the AuthorizationMap we want would look something like this:
>> <authorizationPlugin>
>> <map>
>> <authorizationMap>
>> <authorizationEntries>
>> <authorizationEntry topic=">" read="admins" write="admins" admin="admins"
>> />
>> <authorizationEntry topic="user1.>" read="user1" write="user1"
>> admin="user1"
>> />
>> <authorizationEntry topic="userFoo.>" read="userFoo" write="userFoo"
>> admin="userFoo" />
>> ...
>> <authorizationEntry topic="userZeta.>" read="userZeta" write="userZeta"
>> admin="userZeta" />
>> <authorizationEntry topic="ActiveMQ.Advisory.>" read="all" write="all"
>> admin="all"/>
>> </authorizationEntries>
>> </authorizationMap>
>> </map>
>> </authorizationPlugin>
>> If we use jaas.TextFileCertificateLoginModule, we have to update the
>>, file and the authorizationMap in the
>> activemq.xml file every time we add a user. We can automate this with
>> scripting, but a more elegant solution would be to write our own plugin(s)
>> to implement this policy. I'm in the process of scoping this effort, and so
>> far I haven't found anything other than javadocs on the various classes to
>> guide me. Can anyone provide a high level outline of how I would implement
>> this?
>> Thanks,
>> Jim Lloyd
>> Silver Tail Systems

View raw message