Ce module permet de configurer des contraintes d'unicité sur les valeurs stockées par les attributs.
Il faut simplement charger le module unique :
ldapmodify -Y EXTERNAL -H ldapi:/// << EOF dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: unique EOF
Il faut ensuite configurer les contraintes d'unicité pour votre database :
ldapadd -Y EXTERNAL -H ldapi:/// << EOF dn: olcOverlay=unique,olcDatabase={1}mdb,cn=config objectClass: olcOverlayConfig objectClass: olcUniqueConfig olcOverlay: unique olcUniqueURI: ldap:///dc=example,dc=fr?uid?sub?(objectClass=inetOrgPerson) EOF
L'exemple ci-dessus ajoute une contrainte d'unicité sur les valeurs stockés dans tous l'attribut uid
des objets inetOrgPerson
dans tout l'arbre LDAP dc=example,dc=fr
(scope sub
).
Le paramétrage d'une contrainte d'unicité prend ici la forme d'une URI de recherche LDAP dont le résultat pour une valeur donnée ne devra contenir qu'une seule entrée. Dans l'URI, seul le filtre de recherche est facultatif.
Format de paramétrage d'une contrainte :
ldap:///[base dn]?[attribute1,attribut2,...]?scope[?filtre]
[base dn]
: base DN de la recherche[attribute1,attribut2,…]
: noms des attributs (séparés par des virgules) sur lesquels la contrainte s'applique[scope]
: porté de la recherche : base
, one
ou sub
[?filtre]
: filtre de recherche facultatif permettant de limiter sur quels objets s'applique la contrainteCi-dessous quelques exemples de contraintes applicables sur un annuaire SUPANN :
olcUniqueURI: ldap:///dc=univ,dc=fr?labeledURI?sub olcUniqueURI: ldap:///dc=univ,dc=fr?supannCMSAffectation?sub olcUniqueURI: ldap:///dc=univ,dc=fr?supannCMSAppAffectation?sub olcUniqueURI: ldap:///dc=univ,dc=fr?supannCMSAppId?sub olcUniqueURI: ldap:///dc=univ,dc=fr?supannCMSAppIdDomaine?sub olcUniqueURI: ldap:///dc=univ,dc=fr?supannCMSId?sub olcUniqueURI: ldap:///dc=univ,dc=fr?supannCMSIdEtiquette?sub olcUniqueURI: ldap:///ou=groups,dc=univ,dc=fr?cn?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=groups,dc=univ,dc=fr?displayName?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=groups,dc=univ,dc=fr?supannRefId?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?eduPersonPrincipalName,eduPersonPrincipalNamePrior?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?eduPersonTargetedID?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?eduPersonUniqueId?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?mail,supannAutreMail?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?supannAliasLogin?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?supannCodeINE?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?supannEmpId?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?supannEtuId?sub?(objectClass=supannPerson) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?supannFCSub?sub?(|(supannFCPerson)(objectClass=supannPerson)) olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?supannRefId?sub olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?uid?sub olcUniqueURI: ldap:///ou=people,dc=univ,dc=fr?userCertificate?sub olcUniqueURI: ldap:///ou=structures,dc=univ,dc=fr?ou?sub?(objectClass=supannEntite) olcUniqueURI: ldap:///ou=structures,dc=univ,dc=fr?supannCodeEntite?sub?(objectClass=supannEntite) olcUniqueURI: ldap:///ou=structures,dc=univ,dc=fr?supannRefId?sub