LDAP Configuration

Continuum support LDAP for authentication. To configure it, you should follow these steps:

  • Shutdown Continuum
  • Open apps/continuum/webapp/WEB-INF/classes/META-INF/plexus/application.xml and uncomment the following xml
    <!-- 
       Ldap Authentication can be enabled by setting enabling these components and setting the following configuration options in your security.properties file
      
       user.manager.impl=ldap
       ldap.bind.authenticator.enabled=true
       redback.default.admin=admin
       redback.default.guest=guest
       security.policy.password.expiration.enabled=false
      
       until this process is better documented, the following is the document for configuration ldap with redback
      
       http://redback.codehaus.org/integration/ldap.html
    -->

    <!--
    
    this component manages the connection to the ldap server
    
     * hostname - The hostname of the ldap server
     * port - The port of the ldap server
     * baseDn - The baseDn of the ldap system
     * contextFactory - context factory for ldap connections
     * password - password for the bindDn for the root ldap connection
     * bindDn - the core user used for authentication the ldap server, must be able to perform the necessary searches, etc.
     -->

    <!-- component>
      <role>org.codehaus.plexus.redback.common.ldap.connection.LdapConnectionFactory</role>
      <role-hint>configurable</role-hint>
      <implementation>org.codehaus.plexus.redback.common.ldap.connection.ConfigurableLdapConnectionFactory</implementation>
      <description></description>
      <configuration>
        <hostname></hostname>
        <port></port>
        <baseDn></baseDn>
        <contextFactory>com.sun.jndi.ldap.LdapCtxFactory</contextFactory>
        <password></password>
        <bindDn></bindDn>
      </configuration>
    </component-->
    
    <!-- 
    
    this component manages the mapping of attributes in ldap to user information in redback
    
     * email-attribute - The name of the attribute on a user that contains the email address
     * full-name-attribute - The name of the attribute on a user that contains the users fullName
     * password-attribute - The name of the attribute containing the users password, used for the authentiction using the user manager and not the ldap bind authenticator
     * user-id-attribute - The name of the attribute containing the users userId, most commonly cn or sn.
     * user-base-dn - The base dn that will be subtree searched for users.
     * user-object-class - the objectClass used in the ldap server for indentifying users, most commonly inetOrgPerson.
     -->
    
    <!-- component>
      <role>org.codehaus.plexus.redback.common.ldap.UserMapper</role>
      <role-hint>ldap</role-hint>
      <implementation>org.codehaus.plexus.redback.common.ldap.LdapUserMapper</implementation>
      <description></description>
      <configuration>
        <email-attribute>email</email-attribute>
        <full-name-attribute>givenName</full-name-attribute>
        <password-attribute>userPassword</password-attribute>
        <user-id-attribute>cn</user-id-attribute>
        <user-base-dn>o=com</user-base-dn>
        <user-object-class>inetOrgPerson</user-object-class>
      </configuration>
    </component-->
    
    <!--
     
    If caching is desired then make uncomment this and make sure the following configuration parameter is in the security.properties
     
    user.manager.impl=cached
    -->
     
    <!-- component>
      <role>org.codehaus.plexus.redback.users.UserManager</role>
      <role-hint>cached</role-hint>
      <implementation>org.codehaus.plexus.redback.users.cached.CachedUserManager</implementation>
      <description>CachedUserManager</description>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.redback.users.UserManager</role>
          <role-hint>ldap</role-hint>
          <field-name>userImpl</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.ehcache.EhcacheComponent</role>
          <role-hint>users</role-hint>
          <field-name>usersCache</field-name>
        </requirement>
      </requirements>
    </component-->
    
    <!-- 
    
    if using the user manager authenticator to authenticate the user and not the ldap bind authenticator make sure
    this definition has the correct password encoder
    
    Note: you should probably just use the ldap bind authenticator which is enabled by putting
    
    ldap.bind.authenticator.enabled=true
    
    in the security.properties
    -->
    
    <!-- component>
      <role>org.codehaus.plexus.redback.policy.UserSecurityPolicy</role>
      <role-hint>default</role-hint>
      <implementation>org.codehaus.plexus.redback.policy.DefaultUserSecurityPolicy</implementation>
      <description>User Security Policy.</description>
      <requirements>
        <requirement>
          <role>org.codehaus.plexus.redback.configuration.UserConfiguration</role>
          <field-name>config</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.PasswordEncoder</role>
          <role-hint>sha1</role-hint>
          <field-name>passwordEncoder</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.UserValidationSettings</role>
          <field-name>userValidationSettings</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.CookieSettings</role>
          <role-hint>rememberMe</role-hint>
          <field-name>rememberMeCookieSettings</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.CookieSettings</role>
          <role-hint>signon</role-hint>
          <field-name>signonCookieSettings</field-name>
        </requirement>
        <requirement>
          <role>org.codehaus.plexus.redback.policy.PasswordRule</role>
          <field-name>rules</field-name>
        </requirement>
      </requirements>
    </component-->

All you need to configure is the ConfigurableLdapConnectionFactory and LdapUserMapper components

  • Add a security.properties files under $CONTINUUM_HOME/conf/ with the following content:
    user.manager.impl=ldap
    ldap.bind.authenticator.enabled=true
    redback.default.admin=adminuser
    redback.default.guest=guestuser
    security.policy.password.expiration.enabled=false
    user.manager.impl=cached
    ldap.bind.authenticator.enabled=true
    

    adminuser is a LDAP user and will be the default Continuum admin. guestuser is a LDAP user and will be used for the guest role, generally, it is an utility LDAP account.

  • Restart Continuum

Other resources

Redback LDAP page