Lightweight Directory Access Protocol (LDAP)
URL et Recherches
Format des URLs LDAP
Pour définir plus simplement une référence entre plusieurs annuaires LDAP, ou pour indiquer un chemin LDAP dans lequel on souhaite rechercher un objet, une syntaxe par URL a été définie par l'IETF.
Comme pour toutes URLs, les URLs ldap sont de la forme : protocole://nom_ou_ip[:port]/[ressource]
avec pour protocole :
-
ldap
pour LDAP et LDAP TLS (port 389 si non précisé) -
ldaps
pour LDAP sur SSL/TLS (port 636 si non précisé)
Et comme indication de ressource le Distinguished Name (DN) soit de l'annuaire auquel on souhaite se connecter, soit de l'entrée à laquelle on souhaite faire référence (pour les références inter-annuaires).
ldap[://]
et non ldaps[://]
.Une fois la connexion établie, c'est au client de spécifier que la communication doit être chiffrée en TLS, en utilisant le message
StartTLS
.
Voici quelques exemples d'URL LDAP, valides ou fictives :
-
ldap://ldap.mit.edu:389/dc=mit,dc=edu
(annuaire LDAP du MIT) -
ldap://ldap.mit.edu/ou=employees,dc=mit,dc=edu
(groupe des salariés de l'annuaire LDAP du MIT) -
ldap://ldap.mit.edu/cn=Patricia A White+employeeNumber=f3ba36cea9368a352f692ca87573b3d4,ou=employees,dc=mit,dc=edu
(Entrée LDAP représentant Patricia A. White, salariée du MIT) -
ldaps://192.168.0.3/ou=groups,dc=fictivecorp,dc=local
(URL fictive d'un annuaire local auquel on accède en SSL)
Format des recherches
Les filtres de recherche LDAP sont définis par une syntaxe assez peu usuelle, sur le modèle de la notation polonaise inversée.
Les principes de base de l'écriture d'une requête sont les suivants :
- La requête doit être entourée par des parenthèses (...)
- Chaque composante de la comparaison doit être entourée par des parenthèses (xxx op. yyy)
- La partie précédant l'opérateur de comparaison correspond au nom d'un attribut LDAP
- La partie droite correspond à la représentation textuelle de la valeur à comparer
- Pour échapper un caractère, il faut utiliser l'anti-slash "\" suivi de deux digits représentant le code hexadécimal dans la table ASCII 8bits du caractère à représenter
- Pour les compositions (et/ou/non), l'opérateur se place avant les éléments à comparer (op_cmp(...)(...)(...)...)
Les opérateurs de comparaison les plus courants sont les suivants :
Opérateur | Signification |
---|---|
= | Opérateur d'égalité (peut être case insensitive en fonction du comparateur défini dans le schéma) |
>= | Supérieur ou égal à... |
<= | Inférieur ou égal à... |
~= | Approximativement égal à (par exemple, par application de la méthode SOUNDEX) |
Les opérateurs booléens les plus courants sont les suivants :
Opérateur booléen | Signification |
---|---|
& | ET/AND |
| | OU/OR |
! | NON/NOT |
De plus, il est possible d'utiliser le caractère "*" pour matérialiser 0 à n caractères différents constituant une chaine (ou partie de chaîne) recherchée. Voici quelques exemples de filtres de recherche :
# Filtre cherchant toutes les entrées où l'attribut ou vaut n'importe quelle chaine se finissant par users (ou=*users) # Filtre cherchant toutes les unités organisationnelles dont l'attribut ou se termine par users (&(objectClass=organizationalUnit)(ou=users*)) # Filtre cherchant toutes les unités organisationnelles et les personnes dont l'attribut cn existe (&(cn=*)(|(objectClass=organizationalUnit)(objectClass=inetOrgPerson)))
Remarque : utilisé sans précision, attribut=* signifie que l'attribut "a une valeur". Si l'attribut est optionnel (m-may), la recherche ne retournera que les entrées pour lesquelles l'attribut a une valeur définie.