====== Module unique ====== Ce module permet de configurer des contraintes d'unicité sur les valeurs stockées par les attributs. Ces contraintes sont appliquées lors des requêtes d'ajout, de modification et de renommage des entrés. [[https://www.openldap.org/doc/admin24/overlays.html#Attribute%20Uniqueness|Doc officielle]] ===== Installation ===== 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 ===== Configuration ===== 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 contrainte **Ci-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