LDAP
Par PlaceOweb le mercredi, juin 4 2008, 00:25 - Système - Lien permanent
Besoin d'un annuaire ? Voici la mise en place d'un annuaire LDAP avec OpenLDAP sous Debian. Et l'accès et administration de cet LDAP avec des clients LDAP.
Qu'est ce que LDAP ?
Wikipédia explique le protocole LDAP configuré avec le port le 389 par défaut, ses implémentations serveurs et les clients connus pour parcourir ou administrer votre LDAP.
Initiation à LDAP
- Une bonne et vielle explication française illustrée d'exemples pour comprendre LDAP
- LDAP : Une présentation rapide
- Choix de la hiérarchie de l'annuaire LDAP
- Quel est l'intérêt d'un annuaire LDAP ?
- Une autre brève explication sur LDAP
- OpenLDAP : Configuration d'une base
- Un serveur d'annuaire avec OpenLDAP exemple simple contenant seulement 2 nœuds : People et Groups
- Détail d'un annuaire LDAP avec ses branches : people, groups, rights, computers
- Synchroniser des données utilisateur extraites d'une base de données vers une branche LDAP recensant l'ensemble des utilisateurs du SI et définition de classes d'objet LDAP avec comme exemple une classe employé dérivée de la classe d'objet structurelle inetOrgPerson.
- Configurer LDAP dans Outlook Express, Thunderbird et Kmail
- Mise en oeuvre d'un annuaire LDAP (schéma compatible Mozilla Thunderbird) avec tous les champs utilisables pour le carnet d'adresses Mozilla Thunderbird.
- Spécialistes LDAP francophone
- et les archives LDAP de leur liste destinée à l'échange d'informations sur la mise en œuvre d'outils utilisant le protocole LDAP (annuaires, administration, système,...) en particulier
Installation d'OpenLDAP sur Debian
/etc/apt/sources.list :
deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 NETINST Binary-1 20080218-14:15]/ etch contrib main deb http://security.debian.org/ etch/updates main contrib deb-src http://security.debian.org/ etch/updates main contrib
debianLDAP:/# apt-get install ldap-server ldap-client Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Note, sélection de slapd au lieu de ldap-server Note, sélection de ldap-utils au lieu de ldap-client Certains paquets ne peuvent être installés. Ceci peut signifier que vous avez demandé l'impossible, ou bien, si vous utilisez la distribution unstable, que certains paquets n'ont pas encore été créés ou ne sont pas sortis d'Incoming. L'information suivante devrait vous aider à résoudre la situation :
Les paquets suivants contiennent des dépendances non satisfaites : slapd: Dépend: libiodbc2 (>= 3.52.4) mais il n'est pas installable Dépend: libltdl3 (>= 1.5.2-2) mais il n'est pas installable Dépend: libslp1 mais il n'est pas installable E: Paquets défectueux
Rajout dans /etc/apt/sources.list :
deb ftp://ftp.fr.debian.org/debian/ etch main non-free contrib deb-src ftp://ftp.fr.debian.org/debian/ etch main non-free contrib
Mise à jour de la définition des paquets
debianLDAP:/# apt-get update
debianLDAP:/# apt-get install ldap-server ldap-client Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Le paquet ldap-server est un paquet virtuel fourni par| : slapd 2.3.30-5+etch1 Vous devez explicitement sélectionner un paquet à installer. E: Aucun paquet ne correspond au paquet ldap-server
debianLDAP:/# apt-get install slapd Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Les paquets supplémentaires suivants seront installés| : libiodbc2 libldap-2.3-0 libltdl3 libperl5.8 libslp1 perl perl-base perl-modules psmisc Paquets suggérés| : slpd openslp-doc libterm-readline-gnu-perl libterm-readline-perl-perl ldap-utils Paquets recommandés| : perl-doc libsasl2-modules Les NOUVEAUX paquets suivants seront installés| : libiodbc2 libldap-2.3-0 libltdl3 libperl5.8 libslp1 psmisc slapd Les paquets suivants seront mis à jour| : perl perl-base perl-modules 3 mis à jour, 7 nouvellement installés, 0 à enlever et 4 non mis à jour. Il est nécessaire de prendre 9007ko/9087ko dans les archives. Après dépaquetage, 6169ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n]| ? O Réception de| : 1 http://security.debian.org etch/updates/main perl-modules 5.8.8-7etch3 [2314kB] Réception de| : 2 http://security.debian.org etch/updates/main perl 5.8.8-7etch3 [3584kB] Réception de| : 3 http://security.debian.org etch/updates/main perl-base 5.8.8-7etch3 [760kB] Réception de| : 4 http://security.debian.org etch/updates/main libldap-2.3-0 2.3.30-5+etch1 [266kB] Réception de| : 5 http://security.debian.org etch/updates/main libperl5.8 5.8.8-7etch3 [527kB] Réception de| : 6 http://security.debian.org etch/updates/main slapd 2.3.30-5+etch1 [1174kB] Réception de| : 7 ftp://ftp.fr.debian.org etch/main libiodbc2 3.52.4-5 [164kB] Réception de| : 8 ftp://ftp.fr.debian.org etch/main libltdl3 1.5.22-4 [169kB] Réception de| : 9 ftp://ftp.fr.debian.org etch/main libslp1 1.2.1-6.2 [49,0kB] 9007ko réceptionnés en 38s (234ko/s) Préconfiguration des paquets... (Lecture de la base de données... 13073 fichiers et répertoires déjà installés.) Préparation du remplacement de perl-modules 5.8.8-7etch1 (en utilisant .../perl-modules_5.8.8-7etch3_all.deb) ... Dépaquetage de la mise à jour de perl-modules ... Préparation du remplacement de perl 5.8.8-7etch1 (en utilisant .../perl_5.8.8-7etch3_i386.deb) ... Dépaquetage de la mise à jour de perl ... Préparation du remplacement de perl-base 5.8.8-7etch1 (en utilisant .../perl-base_5.8.8-7etch3_i386.deb) ... Dépaquetage de la mise à jour de perl-base ... Paramétrage de perl-base (5.8.8-7etch3) ... Sélection du paquet libiodbc2 précédemment désélectionné. (Lecture de la base de données... 13073 fichiers et répertoires déjà installés.) Dépaquetage de libiodbc2 (à partir de .../libiodbc2_3.52.4-5_i386.deb) ... Sélection du paquet libldap-2.3-0 précédemment désélectionné. Dépaquetage de libldap-2.3-0 (à partir de .../libldap-2.3-0_2.3.30-5+etch1_i386.deb) ... Remplacement de fichiers dans l'ancien paquet libldap2 ... Sélection du paquet libltdl3 précédemment désélectionné. Dépaquetage de libltdl3 (à partir de .../libltdl3_1.5.22-4_i386.deb) ... Sélection du paquet libperl5.8 précédemment désélectionné. Dépaquetage de libperl5.8 (à partir de .../libperl5.8_5.8.8-7etch3_i386.deb) ... Sélection du paquet libslp1 précédemment désélectionné. Dépaquetage de libslp1 (à partir de .../libslp1_1.2.1-6.2_i386.deb) ... Sélection du paquet psmisc précédemment désélectionné. Dépaquetage de psmisc (à partir de .../psmisc/psmisc_22.3-1_i386.deb) ... Sélection du paquet slapd précédemment désélectionné.
Dépaquetage de slapd (à partir de .../slapd_2.3.30-5+etch1_i386.deb) ... Paramétrage de libiodbc2 (3.52.4-5) ... Paramétrage de libldap-2.3-0 (2.3.30-5+etch1) ... Paramétrage de libltdl3 (1.5.22-4) ... Paramétrage de libperl5.8 (5.8.8-7etch3) ... Paramétrage de libslp1 (1.2.1-6.2) ... Paramétrage de psmisc (22.3-1) ... Paramétrage de perl-modules (5.8.8-7etch3) ... Paramétrage de perl (5.8.8-7etch3) ... Paramétrage de slapd (2.3.30-5+etch1) ... Creating new user openldap... done. Creating initial slapd configuration... done. Creating initial LDAP directory... done. Starting OpenLDAP: slapd.
Installation du client LDAP et outils
debianLDAP:/# apt-get install ldap-utils Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Paquets recommandés| : libsasl2-modules Les NOUVEAUX paquets suivants seront installés| : ldap-utils 0 mis à jour, 1 nouvellement installés, 0 à enlever et 4 non mis à jour. Il est nécessaire de prendre 154ko dans les archives. Après dépaquetage, 410ko d'espace disque supplémentaires seront utilisés. Réception de| : 1 http://security.debian.org etch/updates/main ldap-utils 2.3.30-5+etch1 [154kB] 154ko réceptionnés en 0s (160ko/s) Sélection du paquet ldap-utils précédemment désélectionné. (Lecture de la base de données... 13355 fichiers et répertoires déjà installés.) Dépaquetage de ldap-utils (à partir de .../ldap-utils_2.3.30-5+etch1_i386.deb) ... Paramétrage de ldap-utils (2.3.30-5+etch1) ...
Configuration du serveur LDAP
Notes
Existe t'il un schéma idéal reconnu de tous ?
Ce site nous affirme que non !
Voici par exemple, l'utilisation de votre schéma LDAP par Mozilla Thunderbird. On y constate, qu'ils utilisent :
- givenname pour le prénom (FirstName)
- ??? pour la civilité : M. pour Monsieur, Mme pour Madame, Me pour Maître.
Globlement avec les exemples suivants, on constate l'utilisation de :
- givenname : prénom
- sn : nom
- cn : nom complet ou à afficher
- homePhone : téléphone domicile
- mobile : téléphone portable
- Bureau professionnel :
- o : société
- ou : service
- title : fonction
- telephoneNumber: téléphone
- facsimileTelephoneNumber : fax
- postalAdress : adresse
- postalCode : code postal
- l : ville
- st : état/province/département
Vous pourrez parcourir les définitions des objets et de leurs attributs sur Ldap Schema Viewer.
Exemple d'un schéma objectClass inetOrgPerson utilisé par d'autres logiciels
Fichier LDIF (avec les données binaires tronquées)
dn: uid=totoInetOrgPerson,ou=people,o=monOrganisation,dc=devel objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top cn: cn sn: sn audio:: YXVkaW8= businessCategory: businessCategory carLicense: carLicense departmentNumber: departmentNumber description: description destinationIndicator: destinationIndicator displayName: displayName employeeNumber: employeeNumber employeeType: employeeType facsimileTelephoneNumber: facsimileTelephoneNumber givenName: givenName homePhone: homePhone homePostalAddress: homePostalAddress (multi$lignes) initials: initials internationaliSDNNumber: 046868686975 jpegPhoto:: /9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQ3.... l: l labeledURI: labeledURI mail: mail manager: uid=responsableBoss,ou=people,o=monOrganisation,dc=devel mobile: mobile o: o ou: ou pager: pager physicalDeliveryOfficeName: physicalDeliveryOfficeName postalAddress: postalAddress (multi$lignes) postalCode: postalCode postOfficeBox: postOfficeBox preferredLanguage: preferredLanguage registeredAddress: registeredAddress (multi$lignes) roomNumber: roomNumber secretary:: Y249SkFDSFlNIFPDqWJhc3RpZW4gKGNuXDNEKSxvdT1wZW9wbGUsbz1uYXZpc3Rh LGRjPWRldmVs seeAlso: uid=42,ou=people,o=monOrganisation,dc=devel st: st street: street telephoneNumber: telephoneNumber telexNumber: telexNumber
title: title uid: totoInetOrgPerson userPassword:: e01ENX1JaEJvSUg0U1c1ZSt0T0xRWXVpSXNRPT0= userPKCS12:: OEJQUwABAAAAAAAAAAQAAAEsAAABLAAIAAMAAAAAAAAcbjhCSU0D7QpS.......
Par Thunderbird 2
Par Outlook Express 6
Par Outlook 2003
Encodage
Les données peut être exportées et importées vers des fichiers ascii, on les extensionnent .ldif
Ces fichiers LDIF (Ldap Data Interchange Format) doivent respecter l'encodage UTF8 (attribut: valeurUTF8) pour le texte et base64 (attribut:: valeurBase64) pour les données binaires. Pour convertir de latin1 vers UTF8 :
iconv -f latin1 -t utf8 monfichier > base.ldif
Import / export
Utilisez la commande slapadd ou slapcat avec slapd arrêté (/etc/init.d/ldap stop) !
Clients LDAP
- Apache Directory Studio: un client multi plates-formes, développé en java, par Apache Software Foundation. Encore merci à la fondation Apache pour ce produit qui semble être le meilleur de cette liste : gratuit, multi-plateformes et ergonomiquement simple !
- Jxplorer: un client développé sous Java et donc indépendant du système d'exploitation.
- LDAP Admin: un excellent client pour Windows qui nécessite même pas d'installation !
- LDAPBrowser: un autre client pour Windows dont l'installation m'a échoué sur un serveur TSE.
- phpLDAPadmin.
Outils LDAP
- LDAP Account Manager (LAM) est un outil web pour gérer les comptes (unix, samba) stockés dans un annuaire LDAP.
Script de migration d'une base de donnée vers un annuaire LDAP
Programmer avec LDAP
Autres ressources LDAP
- Object Identifiers et sa recherche d'OIDs
- Ldap Schema Viewer
- Lightweight Directory Access Protocol sur Wikipedia en français et anglais
- LDAP Linux HOWTO
- Flux Applicatifs HTTP