Lightweight Directory Access Protocol (LDAP)
Ecrire ses requêtes LDAP
Recherches
Lorsqu'une application souhaite faire une recherche sur un serveur LDAP, il convient de se poser les questions suivantes :
- L'accès anonyme est-il autorisé ?
- Les entrées/attributs sont ils lisibles avec le compte de connexion ?
- Quelles sont les informations recherchées (minimiser la taille de la réponse)
- Quels sont les attributs dont j'ai besoin dans la réponse (entrée complète ? sous ensemble de ses attributs ?)
Par exemple, si on souhaite chercher les personnes appartenant à la hiérarchie ou=users,dc=example,dc=com, formuler la requête
comme : (ou=users)
dans l'annuaire dont la racine est dc=example,dc=com
n'est pas optimal car on n'a
pas spécifié que c'était un utilisateur qui était recherché.
Ainsi, en formulant cette requête comme (&(ou=users)(objectClass=inetOrgPerson))
, le nombre de résultat sera restreint,
et les informations retournées auront le même intérêt pour le logiciel.
De plus, si on ne fait cette requête que pour récupérer le RDN, le login (uid) de l'utilisateur, et son adresse e-mail, alors on peut
préciser les attributs suivants comme dignes d'intérêts : uid, mail
. La taille de la réponse, et donc sa vitesse
de traitement, en seront d'autant plus allégés.
Souvent, la méthode de l'API permettant d'effectuer une recherche s'appelle list() ou search().
Modifications logicielles dans LDAP
Si les droits d'accès à l'annuaire le permettent, le logiciel peut effectuer des modifications dans l'annuaire, soit pour y stocker des informations associées au compte de l'utilisateur exécutant l'applicatif, soit parce qu'il s'agit d'un programme d'administration de l'annuaire.
Quelle que doit l'API, on retrouve généralement les mêmes noms d'opérations, qui correspondent aux noms des messages LDAP correspondant : add, remove, modify, modifyDN...
Ce qui change en fonction de l'API est la façon dont est représentée une entrée LDAP. Dans certaines, il s'agit d'un objet Entry à part entière; dans d'autres, il est représenté comme un ensemble (Set) d'attributs.
Les exemples de la page suivante illustrent certaines de ces opérations.
Suite [Exemples] >>>