L’intégrité référentielle
1. Présentation
Cette fonctionnalité est appliquée au niveau d’une base de données de type "bdb" ou "hdb" et permet de garantir la cohérence des données de l’annuaire. Ainsi, chaque fois qu’une modification est effectuée au niveau du DN d’une entrée de l’annuaire (suppression ou renommage) cette fonctionnalité recherchera dans le DIT toutes les entrées ayant des attributs faisant référence à celui-ci et les mettra à jour en conséquence. S’il s’agissait d’une opération de suppression alors la référence serait supprimée. S’il s’agissait d’une opération de modification du DN alors la référence serait mise à jour avec le nouveau DN.
Par exemple, une tâche d’administration très courante consiste à maintenir des listes d’utilisateurs via leur DN au sein de différents groupes de l’annuaire. Ainsi, lorsqu’un compte utilisateur est supprimé ou renommé, tous les groupes d’appartenance de cet utilisateur doivent être mis à jour. Les administrateurs LDAP ont généralement des scripts pour cela, mais grâce à cette fonctionnalité, ils n’en auront plus l’usage.
L’exemple ci-dessous permet d’illustrer cette fonctionnalité : lorsque l’utilisateur dn: uid=userA,... est supprimé, tous les attributs member dont la valeur contient cet utilisateur sont supprimés dans l’ensemble de l’annuaire.
¬
Intégrité référentielle
2. Exemple de configuration
1.	Il faut tout d’abord charger le module "refint.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 suivants par défaut :	
dn: olcOverlay=refint,olcDatabase={1}hdb,cn=config 
objectClass: olcOverlayConfig 
objectClass: olcRefintConfig 
olcOverlay: refint 
olcrefint_attributes: member 
olcrefint_nothing: "cn=admin,dc=example,dc=com"
Avec les attributs suivants :
	•	olcrefint_attributes: spécifie la liste des attributs (séparés par des espaces) qui seront contrôlés par la fonctionnalité "refin". Dans l’exemple ci-dessus, cela signifie que lorsque l’annuaire reçoit une demande de suppression d’un DN, il effectue une recherche de toutes les entrées contenant l’attribut member et supprime toute référence à ce DN. IMPORTANT : les attributs répertoriés ici doivent posséder la syntaxe distinguishedName, c’est-à-dire contenir les DN comme valeurs.
	•	olcrefint_nothing: en essayant de maintenir l’intégrité référentielle, il arrive que le serveur doive supprimer l’unique ou la dernière valeur de son attribut, ce qui peut être interdit par le schéma : par exemple, la classe d’objets groupOfNames requiert au moins un membre (c’est-à-dire au moins une valeur pour l’attribut member). Dans ce cas, le serveur supprimera bien la valeur de l’attribut faisant référence au DN supprimé, mais y ajoutera la valeur spécifiée dans "refint_nothing".