Bien que LDAP soit un protocole incontournable et bien établi, se lancer dans le développement d'une application s'interfaçant avec une annuaire LDAP s'apparente souvent à un parcours du combattant. A cela plusieurs raisons :
- La notion d'annuaire peut d'abord paraître bien vague.
- Vous voulez des informations sur LDAP? La meilleure source de documentation à ce sujet reste sans aucun doute les différentes RFC traitant du sujet. Les autres sources de documentation sont souvent soit trop obscures, soit trop succintes. Le bouquin LDAP, Administration Système est également une bonne source d'informations.
- Le développeur moyen a l'habitude de s'interfacer avec une base de données. Il a alors tendance à essayer d'appliquer ses connaissances à un service d'annuaire. Malheureusement pour lui, un service d'annuaire est bien différent d'un système de gestion de données relationnel aussi bien dans son fonctionnement que dans son implémentation. Pour comprendre les différences entre ces 2 types de services, je vous invite à jetter un oeil sur l'article Wikipédia dédié.
- Pour tout développeur JAVA débutant, la découverte de l'API JNDI s'apparente à un vrai cauchemar. Le niveau d'abstraction nécessaire à ce type de librairie (JNDI peut aussi bien être utilisé pour faire des requêtes LDAP, DNS ou récupérer des informations concernant un système de fichier - http://java.sun.com/products/jndi/serviceproviders.html) amène à beaucoup de confusion. On perd en clarté ce qu'on gagne en puissance.
- Il existe une pléthore d'outils, de documentation pour accèder à une base de données ; beaucoup moins lorsqu'il s'agit d'un annuaire LDAP.
Ayant été confronté à ces différents problèmes trés récemment, j'ai dû faire la démarche de tester les différentes solutions qui s'offrent à moi pour faciliter l'interfaçage de mon application JAVA avec un fournisseur LDAP.
- Le fournisseur de service LDAP 'incontournable' reste OpenLDAP (sauf besoin particulier comme Active Directory). Il est tout de même préférable de le garder pour l'environnement de production et de se tourner vers Apache Directory Server pour l'environnement de développement.
- Oublier JNDI tant que vous pouvez, l'API est complexe, impose un niveau d'abstraction élevé : rien de tel pour s'emmêler les pinceaux. Je recommande chaudement Spring LDAP. Certes il faut ramener Spring, mais de mon point de vue c'est dorénavant quasiment toujours le cas sur les projets sur lesquels je bosse.
- JXplorer ou LDAPStudio. Le premier tient plus du choix historique avant que je ne découvre LDAPStudio qui vous procure un atelier complet dédié au développement LDAP (browser, schema browser, schema editor, etc).
À venir bientôt un article sur l'intégration d'ApacheDS avec Spring LDAP.

