Constructeur de filtres LDAP

Des filtres LDAP sans compter les parenthèses : assemble des conditions en quelques clics, ou vérifie un filtre existant et fais-le expliquer en clair. Avec des modèles pour Active Directory et des commandes prêtes.

Modèles pour Active DirectoryVérifie et explique les filtresFonctionne entièrement dans le navigateur

Convertir une date en valeurs de temps AD

FILETIME (lastLogonTimestamp, pwdLastSet, accountExpires …)–
Generalized Time (whenCreated, whenChanged)–

Tout fonctionne en local dans ton navigateur. Les filtres, noms de groupe et de domaine ne sont pas transmis.

Structure d’un filtre LDAP

Un filtre LDAP décrit les objets que doit renvoyer une recherche. Chaque condition est entre parenthèses et l’opérateur vient en premier : (&(a)(b)) signifie « a et b », (|(a)(b)) « a ou b », (!(a)) « pas a ». C’est vite écrit et vite mal parenthésé, d’où le constructeur.

Ce qui diffère dans Active Directory

Caractères spéciaux dans les valeurs

Les caractères *, (, ), \ et NUL s’écrivent \2a, \28, \29, \5c et \00 dans une valeur (RFC 4515). Le constructeur le fait automatiquement. Un nom de groupe comme « Ventes (Nord) » devient Ventes \28Nord\29. En PowerShell, le filtre se met entre apostrophes pour que $ et ` ne soient pas interprétés.

D’autres outils pour l’administration : filtre tcpdump, calculateur de sous-réseaux et recherche DNS.

FAQ

Pourquoi mon filtre objectClass=user renvoie-t-il aussi des ordinateurs ?

Parce que la classe « computer » dérive de « user » dans AD. Ajoute (objectCategory=person) et seuls les utilisateurs restent. C’est aussi plus rapide, car objectCategory est indexé.

Comment trouver tous les membres d’un groupe, sous-groupes compris ?

Avec (memberOf:1.2.840.113556.1.4.1941:=CN=Groupe,OU=…,DC=…). La valeur doit être le nom distinctif complet du groupe. Une imbrication très profonde peut ralentir la requête.

Comment interroger les comptes désactivés ou verrouillés ?

Désactivés : (userAccountControl:1.2.840.113556.1.4.803:=2). Verrouillés : (lockoutTime>=1). AD ne gère plus le bit 16 de userAccountControl. lockoutTime reste défini après la fin du verrouillage jusqu’à la prochaine connexion.

Mes filtres sont-ils envoyés quelque part ?

Non. Constructeur, vérification et conversion fonctionnent entièrement dans ton navigateur. Seule la barre d’adresse contient le filtre actuel, pour pouvoir le partager en lien.

Cela fonctionne-t-il avec OpenLDAP ?

Oui, la syntaxe est normalisée (RFC 4515). OpenLDAP ne connaît cependant pas les règles propres à AD pour les bits et les groupes imbriqués, et les attributs y portent souvent d’autres noms, p. ex. uid au lieu de sAMAccountName.