Construire son application web de gestion de contenu d’annuaire LDAP Clément OUDOT
RMLL 10 juillet 2012–
2
Sommaire● Les annuaires LDAP● Les interfaces● Présentation de LinID Directory Manager
3
Présentation
4
Clément OUDOT● Administrateur LDAP depuis 2003 à LINAGORA● LinID Dream Team Manager : http://linid.org ● Leader du projet LDAP Tool Box :
http://ltb-project.org ● Leader du projet LemonLDAP::NG :
http://lemonldap-ng.org
5
Les annuaires LDAP
6
Le protocole LDAP● Protocole défini par des standards (RFC)● LDAPv2 en 1995, LDAPv3 en1997● TCP/IP, LBER, ASN1 ● 9 opérations unitaires et possibilités d'extension● Schéma définissant les classes d'objet, les
attributs, les syntaxes et les règles de comparaison
● Organisation des données en arbre
Flux LDAP
Client Annuaire
Connexion
Authentification
Authentification réussie
Recherche
Résultat de la recherche
Modification d'une entrée
Erreur lors de la modification
Ajout d'une entrée
Entrée ajoutée
Déconnexion
8
Directory Information Tree
dc=linid,dc=org
ou=people ou=groupsou=structures
uid=coudot cn=admin
Entrée / Attribut / Valeur
Attribut Attribut
AttributAttribut
Entrée
Attribut
Valeur
Valeur
Valeur
Quelques implémentations serveurUniversité
du Michigan
Netscape Directory
Server
OpenLDAP
Novell eDirectory Microsoft
Active Directory
IBMCriticalPath
Propriétaires Libres
SUN Directory
Server
Oracle Directory
Server
OpenDS
ApacheDS
OpenDJ
RedHat Directory
Server
Fedora Directory
Server
Port 389
Exemples d'usage● Infrastructure :
● Référentiel d'authentification● Gestion des machines, des comptes SUDO
● Sécurité :● Référentiel d'authentification et d'autorisation● Stockage des certificats
● Utilisateur :● Pages blanches, pages jaunes● Intranet, carnet d'adresse
12
Les interfaces
13
Les outils d'administration● Ligne de commande, console :
● ldapsearch, ldapmodify● ldapvi● Scripts Perl (Net::LDAP)
● Clients lourds :● Jxplorer, LDAP browser● Apache Directory Studio
● Interfaces Web :● phpLDAPadmin● web2ldap
14
Apache Directory Studio
15
Les interfaces de gestion● Dans le monde propriétaire :
● Calendra Directory Manager (Calendra)● Meibo (Ilex)● Certains Identity Manager (Oracle, Novell, etc.)
● En logiciel libre :● LDAP Account Manager● ldapSaisie● Fusion Directory● LinID Directory Manager● OpenIDM (ForgeRock)
● En majorité : des développements spécifiques
16
Fonctionnalités attendues● Conception des écrans (modèles HTML)● Afficheur et éditeur de valeurs adaptés à chaque
type d'attribut● Choix des libellés, internationalisation● Délégation de gestion, modèle d'autorisation par
profils● Flux métiers● Respect du DIT initial● Gestion des photos, navigation contextuelle, etc.
17
LinID Directory Manager
18
Historique● Développements initiés à l'UPMC en 2002,
d'abord en PHP puis en Java, sous le nom MetaLDAP
● Publication en Open Source sous le nom InterLDAP en 2003, devient projet ObjectWeb en 2006 dans le cadre de FederID
● Création de l'offre LinID en 2008, et renommage en LinID Content Manager puis LinID Directory Manager, hébergé sur la forge LinID chez LINAGORA
19
Couches logicielles● LinID Directory Manager est un framework Web
construit sur :● Tapestry 5● Spring, Spring LDAP● Maven● Xstream● Rhino● Ehcache
20
Architecture technique● Schéma enrichi :
● Reprend et surcharge le schéma technique LDAP● Ajoute des propriétés comme les libellés, les listes de
valeurs, les recherches autorisées...
● Autorisations :● Utilisation de règles implémentées dans l'interface avec le
langage LQL (LDAP Query Language)● Possibilité de s'appuyer sur les droits côté annuaire LDAP
avec des contrôles étendus comme Get Effective Rights
● Dépôt d'entrées :● Modélisation Java des entrées LDAP et des paramètres du
schéma enrichi, filtrées par la couche autorisation
21
Tester LinID Directory Manager● Une application des démonstration est fournie
avec le framewok (sample)● L'application embarque un annuaire OpenDS avec
quelques données de test, dont deux utilisateurs :● jdoe/secret : administrateur● jsmith/secret : utilisateur
● Possibilité de déployer dans Tomcat ou Jetty● Démarrage depuis le SVN :
$ mvn -Popends jetty:run
22
Page de démarrage de la démonstration
23
Créer sa propre application de gestion● Une phase d'étude préalable :
● Modèle de données● Profils de droits● Choix des écrans
● Copie de l'application de démonstration et import dans Eclipse
● Génération du schéma enrichi (script Perl fourni: eschemaGenerator.pl)
● Édition XML : schéma enrichi, règles LQL● Adaptation des écrans
24
Exemples de réalisation
25
Exemples de réalisation
26
Exemples de réalisation
27
Exemples de réalisation
Présentation de LinID OpenLDAP Manager en conférence jeudi 12 juillet !
28
La fin est proche...
29
Merci● Merci :
● RMLL et les organisateurs de la session● Société LINAGORA
● Restons en contact :● Identica: @coudot● Twitter: @clementoudot @LinID_FOSS ● IRC: KPTN #LinID@freenode
30
Questions ?
Merci de votre attention
http://www.linid.org
Logiciels et services Open Source80 rue Roque de Fillol l 92800 PUTEAUXTel : 0810 251 251 l Fax : +33 1 46 96 63 64www.linagora.com