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 :

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).

Pour une connexion LDAP TLS, le champs protocole de l'URL doit indiquer 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 :

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 :

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.

Suite [Logiciels] >>>