On 23 April 2010 16:01, Marnie McCormack
<marnie.mccorm...@googlemail.com> wrote:
> On Fri, Apr 16, 2010 at 10:29 AM, Andrew Kennedy 
> <andrewinternatio...@gmail.com> wrote:
>
>> hi.
>>
>> perhaps also splitting group configuration and ACL configuration into
>> separate files, since these are obviously quite different things, and
>> it is foreseeable that groups would be desirable to load via an
>> external authentication or directory service.
>>
>> I think splitting out groups and ACL from the one file would be a good
> thing, I don't see why we'd maintain them in the same place. I don't know
> how the groups are used (aside from ACLs) in the C++ broker though ? Groups
> would often be anticipated to come from another source, ideally, to negate
> the need to maintain multiple user credentials.

the changes i am suggesting for the acl file format are fairly minor,
to be honest, and i will expand on this in a later message.

i also agree with all the points made on-list about group definitions.
 there are several mechanisms available for accessing group and role
informastion, such as the basic unix /etc file format, microsoft
active directory or plain LDAP or JNDI. Also, proprietary SSO systems,
or mechanisms like siteminder or perhaps links to a kerberos
authentication system could be used. this would function with a
pluggable group access module, similar to the ACL and authentication
modules.

the plugin would need to allow verification of an authenticated
principal's membership in a group. this could be achieved at initial
authentication, however for long-lived connections this might cause
problems if group memberships are changed to add permissions mwhile
the broker is running.  the plugin could integrate with an
authenticationm mechanism and share code and configuration, simply
offering an extra interface via a new group access API. in fact, the
authentication code provides a good model for implementation of
different group access mechanisms.

the api for the plugin must, at minimum support a method that checks
if a given user is a member of a particular group name:

boolean checkMembership(String userName, String groupName);

examples of plugin classes would be:

org.apache.qpid.server.security.groups.plugin.UnixFile
org.apache.qpid.server.security.groups.plugin.ActiveDirectory
org.apache.qpid.server.security.groups.plugin.LDAPServer
org.apache.qpid.server.security.groups.plugin.JNDIServer

cheers,
adk.
-- 
-- andrew d kennedy ? edinburgh : +44 7941 197 134

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to