Skip to content
Snippets Groups Projects
Forked from an inaccessible project.

Qu'est ce qu'un LDAP ?

LDAP signifie Lightweight Directory Access Protocol ; c'est donc un protocole, comme http, et pas une structure de données à proprement parler. Comme http, il fonctionne par chaîne de caractères appelés URI. La structure d'un LDAP est cependant forcément celle d'un arbre, avec une racine à la fin de l'URI et le noeud recherché à la fin. Par exemple "uid=louis.vaneau,ou=eleves,dc=frankiz,dc=net", qui permet d'accéder à la feuille associée à Louis Vaneau dans le LDAP de frankiz.

Il s'agit d'une structure particulièrement rigide mais efficace en lecture. Chaque noeud contient un certain nombre de champs qui ne sont pas nécessairement tous remplis, et qui n'ont pas forcément une seule variable par champ. Un LDAP est une structure parfaitement adapté à la réalisation d'un annuaire car pensé pour cela dès l'origine ; très efficace en lecture, il brille moins en écriture.

La technologie est ancienne et bien connue. Le LDAP de Frankiz, OpenLDAP, contient beaucoup de fonctionnalités sympathique comme le hashage inclus des mots de passe avec salt conformément à l'état de l'art.

Un wrapper sympathique...

On accède sur un LDAP par des requêtes LDAP, d'où l'intérêt d'une bibliothèque comme ldap.js qui fait office de traducteur javascript/LDAP, un peu comme knex et SQL. On s'intéressera particulièrement à la partie client qui est celle qui permet d'agir sur le LDAP.

Cette bibliothèque est reprise et re-wrappée dans la classe Basics.

Pas complètement dépourvu de dangers !

Comme tous les protocoles, LDAP a ses failles. En particulier, il est possible d'injecter des commandes via un nom de domaine (Domain Name ou DN) ou un filtre (filter). Ces dangers sont adressés par sigma en utilisant la bibliothèque ldap-escape.

Une interface graphique agréable

Pour explorer un LDAP, vous pouvez utiliser JXplorer. Il s'agit d'un logiciel OpenSource en Java très imparfait mais qui permet de rapidement parcourir les champs d'un LDAP et de mener des petites recherches dessus.