Atlassian refers to Crowd as an Single-Sign On and Identity Management Server. This basically means that Crowd is a directory server that allows you to manage users, groups, and roles. Atlassian provides Crowd integration libraries for all of their products ('natch), Apache, Subversion, and Jive Forums, Acegi, and Spring Security, as well as a generic Java client. Crowd can be used in many scenarios where an LDAP server could be used, but differs from LDAP servers in the following ways:
Crowd also can act as an OpenID provider and has limited support for SAML, largely to support Google Apps.
I was drawn to Crowd after doing many different LDAP integrations and running to what I saw as roadblocks to agility. Crowd is easy to mock, easy to administer, and easy to develop against.
Starting with version 1.1, it has been possible to use alternate authentication mechanisms within Nexus. With this in mind, the objectives for the Crowd plugin were pretty straightforward:
This last point was particularly important. The Nexus permission model is (necessarily) complex with support for repository-specific permissions, nested roles, and the potential for permission to be added by plugins or in future releases. As such, it seemed to make the most sense to have user/role mappings done in Crowd, but the role/permission mappings done inside Nexus.
In Nexus 1.1, accomplishing these objectives involved a substantial amount of boilerplate code involved in order to accomplish the last objective. With Nexus version 1.2, support for external authentication sources was substantially improved and the Crowd plugin was rewritten to take advantage of those improvements.
Moving forward, the two substantial improvements identified for the plugin are a configuration user interface and support for Single Sign On (SSO). If you have additional suggestions for plugin features, please raise those via JIRA or on the Nexus mailing list.