====== les annuaires ldap ====== remarque : cette page est inspirée d'une [[http://www.cru.fr/ldap/|documentation]] du CNRS ---- ===== qu'est-ce qu'un annuaire électronique ===== C'est un catalogue, dans lequel on peut mettre ce que l'on veut (téléphone, adresses, photos, ...), pour le partager. En fait, ça ressemble beaucoup a une base de données, avec quelques différences notables : * il est conçu pour avoir beaucoup de requêtes en lecture, peu en écriture * pas de requêtes compliquées (comme les jointures en sql) * serveur réseau * protocole simple, léger et standardise : ldap ( lightweight directory access protocol), dérivé de X500 ---- ===== à quoi ça sert ===== * à chercher des informations * pour des humains ou des applications * à gérer une base de données simple ---- ===== historique ===== * base de compte multi-utilisateurs : /etc/passwd /etc/hosts (1970-1980) * NIS (1980 ?) : pour de petites configurations * DNS (1984) : spécifique aux nommage ip * X500 (1988) : très lourd, clients bugués, basé sur l'ISO (et non pas TCP/IP) * ldap (1993) ---- ===== concepts ===== ldap définit : * un [[#protocole|modèle d'accès (protocole)]] : comment accéder a l'information contenue dans l'annuaire * un [[#information|modèle d'information]] : le type d'informations contenues dans l'annuaire * un [[#nommage|modèle de nommage]] : comment l'information est organisée et rférencée * un [[#fonctionnel|modèle fonctionnel]] : comment on accède et met a jour l'information * un [[#securite|modèle de sécurité]] : comment données et accès sont protégés * un [[#duplication|modèle de duplication]] : comment la base est repartie entre serveurs * une [[#api|API]] : pour développer des applications clientes * un [[#ldif|format d'échange]] de données : ldif ---- ===== implémentation ===== il y a des solutions commerciales : * netscape directory server * Sun microsystem directory service * IBM, Innosoft ... et une solution libre : * [[http://www.openldap.org/|openldap]] ---- ===== protocole ===== * ldap v3 * port 389 ou 636 (ldap sur ssl) * connexion, commandes, déconnexion * conçu pour être extensible ---- ===== modèle d'information ===== définit le type des données stockées * élément de base : objet * les informations sont représentées sous forme d'attributs * ldap propose un certain nombre de classes prédéfinies * les classes sont facilement extensibles par héritage * le schéma décrit les classes d'objets, les types des attributs et leur caractéristiques ---- ===== modéle de nommage ===== définit comment sont organisée les entrées, et comment elles sont référencées * les entrées représentent des objets * l'organisation est hiérarchique, mais libre (a plat, par localisation, par service, par type ...) * une entrée est identifiée par un "dn" (distinguish name), qui doit être unique, et qui est formé de la suite des noeuds traversés * recommandation : coller a la structure du DNS, avec l'attribut "dc" * les alias et les referral : permet de pointer vers une autre entrée d'annuaire (délégation) ---- ===== modèle fonctionnel ===== décrit le moyen d'accéder aux données et les opérations qu'on peut leur appliquer * authentification * interrogation * comparaison * mise a jour (add, delete, rename, modify) ---- ===== modèle de sécurité ===== * authentification pour accéder au service * modèle de contrôle d'accès aux données par des ACL sur des nœuds de l'arborescence * quoi : ou s'applique la règle * qui : a qui ça s'applique * comment : read, write, search, add, delete, compare ... * chiffrement des transactions entre clients et serveurs ---- ===== modèle de duplication ===== permet de dupliquer un dupliquer un annuaire sur plusieurs serveurs : * garantit la qualité de service : temps de réponse et sûreté de fonctionnement * répartition de charge * un maître, des esclaves * synchronisation totale/incrémentale, temps réel/différé ---- ===== programmation ===== il y a des api pour les langages : * C * perl (package perl_ldap ou perl-URI) * python * java * php * ... ---- ===== format d'échange : ldif ===== permet : * des imports/export d'annuaire * des modifications en format ASCII/base 64, maintenant en UTF8 ---- ===== interface graphiques ===== via un navigateur : * vers une application php : [[http://terrencemiao.com/LDAPExplorer-latest.tgz/|ldapexplorer]] * minimal via un simple navigateur Web sur une URL du type "ldap://host:389/dc=subdomain,dc=domain?cn,mail?Sub" via un client spécialisé * via une appli gtk : [[http://biot.com/gq/|gq]] * via une appli java : [[http://jxplorer.org/jxplorer]] * via une appli java : [[http://ldaptool.sourceforge.net/|ldap browser]] : projet non maintenu ---- ===== applications ===== * windows 2000 et suivants (XP, vista, 2003 ...) : active directory * mozilla/outlook : carnet d'adresse centralise * gestion centralisée de l'authentification et des droits d'accès (mot de passe unique UNIX/Windows) : pam_ldap * gestion de parc informatique * serveurs de mail (sendmail, postfix ) et de mailing listes (sympa) * annuaire du personnel, téléphonique * stockage de clef publiques * DNS : remplacement de bind, ou redirection (v9) vers un ldap * services divers : samba, squid (squid_pam_auth), dhcp, pppd, horde * clients divers : pine, evolution, openoffice, ils (telephone sur ip) ... ---- ===== documentation ===== - [[http://www.cru.fr/ldap/|cru]] : une présentation trés complète - [[ftp://kalamazoolinux.org/pub/pdf/ldapv3.pdf|ldapv3]] : un bon panorama des utilisations - [[http://www.openldap.org/doc/admin/quickstart.html|pour démarrer]] (en anglais) - [[http://www.linux-france.org/article/serveur/ldap/|documentation en français]] (linuxfrance) - [[http://www.annuairesldap.com/index.php|portail]] consacre aux annuaires - [[http://www.commentcamarche.net/ldap/|commentcamarche]] - [[http://jfgiraud.free.fr/programmation/ldap/|autre]] --- //[[eric.gerbier@free.fr|eric gerbier]] 2009/09/16 16:14// {{tag>administration}}