11.3. Assigning Password Policies

You assign subentry based password policies for a subtree of the DIT by adding the policy to an LDAP subentry whose immediate superior is the root of the subtree. In other words you can add the subtree based password policy under ou=People,dc=example,dc=com, to have it apply to all entries under ou=People,dc=example,dc=com. You can further use the capabilities of LDAP subentries to refine the scope of application.

You assign server based password policies by using the ds-pwp-password-policy-dn attribute.

Procedure 11.4. To Assign a Password Policy to a User

  1. Prevent users from selecting their own password policy.

    $ cat protectpwp.ldif 
    dn: ou=People,dc=example,dc=com
    changetype: modify
    add: aci
    aci: (target ="ldap:///uid=*,ou=People,dc=example,dc=com")(targetattr =
     "ds-pwp-password-policy-dn")(version 3.0;acl "Cannot choose own pass
     word policy";deny (write)(userdn = "ldap:///self");)
    
    $ ldapmodify
     --port 1389
     --bindDN "cn=Directory Manager"
     --bindPassword password
     --filename protectpwp.ldif
    Processing MODIFY request for ou=People,dc=example,dc=com
    MODIFY operation successful for DN ou=People,dc=example,dc=com
  2. Update the user's ds-pwp-password-policy-dn attribute.

    $ cat newuser.ldif 
    dn: uid=newuser,ou=People,dc=example,dc=com
    uid: newuser
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: top
    cn: New User
    sn: User
    ou: People
    mail: newuser@example.com
    userPassword: changeme
    ds-pwp-password-policy-dn: cn=New Account Password Policy,cn=Password Policies,
     cn=config
    
    $ ldapmodify
     --port 1389
     --bindDN "cn=Directory Manager"
     --bindPassword password
     --defaultAdd
     --filename newuser.ldif
    Processing ADD request for uid=newuser,ou=People,dc=example,dc=com
    ADD operation successful for DN uid=newuser,ou=People,dc=example,dc=com
  3. Check your work.

    $ ldapsearch
     --port 1389
     --bindDN "cn=Directory Manager"
     --bindPassword password
     --baseDN dc=example,dc=com
     uid=newuser
     pwdPolicySubentry
    dn: uid=newuser,ou=People,dc=example,dc=com
    pwdPolicySubentry: cn=New Account Password Policy,cn=Password Policies,cn=config

Procedure 11.5. To Assign a Password Policy to a Group

  1. Create a subentry defining the collective attribute that sets the ds-pwp-password-policy-dn attribute for group members' entries.

    $ cat pwp-coll.ldif
    dn: cn=Password Policy for Dir Admins,dc=example,dc=com
    objectClass: collectiveAttributeSubentry
    objectClass: extensibleObject
    objectClass: subentry
    objectClass: top
    cn: Password Policy for Dir Admins
    ds-pwp-password-policy-dn;collective: cn=Root Password Policy,cn=Pass
     word Policies,cn=config
    subtreeSpecification: { base "ou=People", specificationFilter "(isMemberOf=
     cn=Directory Administrators,ou=Groups,dc=example,dc=com)"}
    
    $ ldapmodify
     --port 1389
     --bindDN "cn=Directory Manager"
     --bindPassword password
     --defaultAdd
     --filename pwp-coll.ldif
    Processing ADD request for cn=Password Policy for Dir Admins,dc=example,dc=com
    ADD operation successful for DN cn=Password Policy for Dir
     Admins,dc=example,dc=com
  2. Check your work.

    $ ldapsearch
     --port 1389
     --baseDN dc=example,dc=com
     uid=kvaughan
     pwdPolicySubentry
    dn: uid=kvaughan,ou=People,dc=example,dc=com
    pwdPolicySubentry: cn=Root Password Policy,cn=Password Policies,cn=config