Attribute Uniqueness
1. Présentation
Cette fonctionnalité peut être utilisée avec une base de données de type "bdb" ou "hdb" et permet de faire respecter l’unicité de valeur de certains ou de tous les attributs d’un annuaire. En effet, dans le cas d’un attribut de type "numéro de téléphone", il paraît évident que la valeur de celui-ci ne peut être détenue que par une seule et même personne. L’inverse étant par ailleurs faux : une personne peut détenir plusieurs numéros de téléphone. Ainsi, lors de l’ajout d’une valeur de type "numéro de téléphone", cette fonctionnalité parcourra donc l’annuaire pour vérifier qu’elle n’est pas déjà utilisée dans une autre entrée.
¬
Cette fonctionnalité n’est pas rétroactive et traite les opérations qu’elle reçoit seulement au moment de son activation sur l’annuaire. Ainsi, pour vérifier l’unicité des données existantes, il faudra utiliser des requêtes LDAP de type recherche et faire soi-même la comparaison de toutes les valeurs. Une autre méthode consisterait à exporter son annuaire puis à le réimporter à l’aide de commande de type ldapadd, mais cette méthode n’est surtout valable que pour de petits annuaires.
2. Exemple de configuration
1.	Il faut tout d’abord charger le module "unique.la" dans l’entrée :dn: cn=module{0},cn=config	
2.	Puis, il faudra appliquer cette fonctionnalité au niveau de l’entrée de l’annuaire ciblé (ex. olcDatabase={1}hdb,cn=config) à l’aide d’une commande ldapadd avec les paramètres par défaut suivants :	
dn: olcOverlay=unique,olcDatabase={1}bdb,cn=config 
objectClass: olcOverlayConfig 
objectClass: olcUniqueConfig 
olcOverlay: unique 
olcunique_uri ldap:///?mail?sub?
La configuration ci-dessus applique l’overlay "uniqueness" pour l’attribut mail de tout objet se trouvant dans l’annuaire. Ainsi, lorsqu’une opération de type "ajout" ou "modification" concernant l’attribut mail est réalisée sur l’annuaire, cette fonctionnalité vérifiera si la valeur rentrée n’est pas déjà utilisée. Si tel est le cas, l’opération sera rejetée.
Voici le message d’erreur qui serait retourné en cas de valeur identique :
adding new entry "cn=toto,dc=exemple,dc=com" 
ldap_add: Constraint violation (19) 
additional info: some attributes not unique
¬
Pour plus d’information, il faudra regarder les manpages : man slapo-unique.