Qu`est ce que LDAP ? LDAP (Lightweight Directory Access Protocol
Transcription
Qu`est ce que LDAP ? LDAP (Lightweight Directory Access Protocol
Qu’est ce que LDAP ? LDAP (Lightweight Directory Access Protocol, protocole d'accès aux annuaires allégé) est une norme ouverte proposée pour les services d'annuaire globaux ou locaux sur intranet et/ou Internet, en particulier pour les services d’annuaire X500.Les détails de LDAP sont définis dans RFC2251"The Lightweight Directory Access Protocol (v3)" et d’autres documents comportant les spécifications techniques : RFC3377 Quel genre d’information peut être stocké dans l’annuaire ?le modèle de données de LDAP est basé sur des entrées. Une entrée est une collection d’attributs qui a un unique Distinguished Name (DN). Le DN est employé pour se référer à l’entrée de manière claire. DN:relativeDomainName=domain1,dc=nic,dc=cctld objectClass:dNSZone objectClass:zonePerson relativeDomainName:domain1 zoneName:cctld dNSClass:IN proprietaire:CLIENT1 dateacquis:20040604041800Z validite:20060605164000Z technical-contact: ALAIN AINA technical-contact:AIT, bangkok technical-contact:Tel:+78123455678-Email:[email protected] admin-contact: John CRAIN admin-contact:ICANN admin-contact:Tel:+2282255555 - Email: [email protected] dNSTTL:7200 nSRecord: adjo.cafe.org. nSRecord: ns.psg.com. Comment l’information est-elle arrangée ? Dans LDAP, les entrées sont structurées sous forme d’un arbre hiérarchique. Traditionnellement, cette structure reflétait les frontières géographique et/ou organisationnelle. L’arbre peut également être arrangée sur la base des noms de domaine Internet. Cette approche d’appellation grandissante devient populaire car elle soutient que les services d’annuaires soient localisés en utilisant le DNS . En outre, LDAP vous permet de contrôler quels attributs sont exigés et permis dans une entrée par l’utilisation d’un attribut spécial appelé classe d’objet ou ObjectClass. Les valeurs de l’attribut ObjectClass déterminent les règles de schéma que l’entrée doit obéir. objectclass ( 1.1.2.2.2 NAME 'myPerson' DESC 'my person' SUP inetOrgPerson MUST ( myUniqueName $ givenName ) MAY myPhoto ) attributetype ( 1.1.2.1.2 NAME 'myPhoto' DESC 'a photo (application defined format)' SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 SINGLE-VALUE ) Comment l’information est-elle référencée ? Une entrée est référencée par son distinguished name, qui est représentée en prenant le nom de l’entrée lui-même (appelé Relative Distinguished Name ou RDN) et en enchaînant les noms des entrées de ses ancêtres. Le format du DN complet est décrit dans RFC2253, "Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names." DN:relativeDomainName=domain1,dc=nic,dc=cctld Comment l'information est-elle consultée ? LDAP définit des opérations pour interroger et mettre à jour l'annuaire. Des opérations sont fournies pour ajouter et supprimer une entrée de l'annuaire, changer une entrée existante et changer le nom d’une entrée. La majeure partie du temps, bien que, LDAP soit employé pour rechercher l'information dans l'annuaire, l'opération de recherche de LDAP permet à une certaine partie de l'annuaire d'être recherchée par des entrées qui vérifient quelques critères indiqués par un filtre de recherche. L'information peut être demandée par chaque entrée qui vérifie les critères. Comment l’information est-elle protégée contre les accès non autorisé ? Quelques services d'annuaire n'assurent aucune protection, permettant à n'importe qui de voir l'information. LDAP fournit à un client un mécanisme de s’authentifier ou de prouver son identité à un serveur d’annuaire, préparant ainsi le terrain pour que le contrôle d'accès riche protège l'information que le serveur contient. LDAP supporte également des services sécuritaires de confidentialité et d'intégrité. Modèles de LDAP Les modèles de LDAP représentent les services fournis par un serveur, comme vu par un client. Ils sont des modèles abstraits qui décrivent les diverses facettes d’un annuaire LDAP. RFC 2251 divise un annuaire LDAP en deux composants : le modèle du protocole et le modèle de données. Modèle de données Le modèle de données fournit les structures et le type de données nécessaire pour construire l’arbre d'un annuaire LDAP. Une entrée est l’unité de base dans un annuaire LDAP. Vous pouvez visualiser une entrée comme nœud intérieur ou extérieur dans l’arbre de l’annuaire ou DIT (Directory Information Tree).Une entrée contient des informations sur un exemple d’un ou plusieurs Classes d’objets (objectclass). Ces classes d’objets ont certains attributs requis ou facultatifs. Les types d’attributs ont défini des codes et des règles qui régissent de telles choses comme type de données que l’attribut peut contenir et comment comparer ces données pendant une recherche. Modèle de nommage Le modèle de nommage définit comment des entrées et les données dans l’arbre d’information (ou DIT) sont uniquement mises en référence. Chaque entrée a un attribut qui est unique parmi toutes les entrées filles d’un parent simple. Cet attribut unique s’appelle relative distinguished name (RDN). Vous pouvez identifier de manière unique n’importe quelle entrée dans un annuaire en suivant le RDNs de toutes les entrées du chemin du noeud désiré jusqu’à la racine de l’arbre. Cette chaîne créée en combinant RDNs pour former un nom unique s’appelle le noeud distinguished name (DN). Modèle fonctionnel Le modèle fonctionnel est le protocole lui-même. Le modèle fonctionnel décrit le moyen d’accéder aux données et les opérations qu’on peut leur appliqués. Le modèle fonctionnel définit les opérations d’interrogation (recherche et lecture), de comparaison, de mise à jour (écriture), d’authentification et de contrôle ainsi que des opérations étendues valables uniquement pour la version 3 de LDAP. access to * by self write by anonymous auth by users read Modèle de sécurité Le modèle de sécurité fournit un mécanisme au client afin qu’ils prouvent leur identité (authentification) et aux serveurs la possibilité de contrôler l’accès aux données des utilisateurs authentifiés (autorisation).LDAPv3 fournit plusieurs méthodes d’authentification non disponibles dans les versions antérieures du protocole. Quelques dispositifs, tels que des listes de contrôles d’accès, n’ont pas encore été normalisés, laissant les fournisseurs à leurs propres dispositifs. Le service d’annuaire LDAP fonctionne en mode client serveur. Bon nombres de serveurs LDAP contiennent des données comportant l’arbre d’information de l’annuaire (DIT). Un client LDAP se connecte à un serveur LDAP, puis émet une requête pour obtenir des informations ou fournit au serveur des informations à entrer dans l'annuaire. Le serveur répond à la requête, la renvoie à un autre serveur LDAP ou accepte les informations afin de les incorporer dans l'annuaire. Le nom présenté à un serveur LDAP référencé par une entrée sera la même qu’au niveau d’un autre serveur LDAP. Procédure d’Installation de openldap Installation de Berkelley DB Maintenant nous devons obtenir le code source du DB de Berkeley sur http://www.sleepycat.com. Veuillez télécharger la version 4.2.52 de Berkeley DB sans cryptage. $cd /tmp $ tar -xvzf db-4.2.52.NC.tar.gz $ ./db-4.2.52.NC /dist/configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin -sbindir=/usr/sbin --libdir=/usr/lib $make $su – Password: <root password> #cd /tmp #make install Installation de openldap Télécharger le logiciel Une copie du logiciel peut être obtenu en suivant les instructions sur la page de téléchargement de OPENLDAP (http://www.openldap.org/software/download/). Il est recommandé que les nouveaux utilisateurs commencent avec la dernière version réalisée. $cd /tmp $tar -xvzf openldap-2.2.17.tar.gz $cd openldap-2.2.17 $./configure --prefix=/usr --exec-prefix=/usr --libexecdir=/usr/sbin --sbindir=/usr/sbin -bindir=/usr/bin --libdir=/usr/lib --oldicludedir=/usr/include --localstatedir=/var/run -sysconfdir=/etc --enable-shared --with-gnu-ld --enable-debug --with-tls --with-threads -enable-crypt --enable-cleartext --enable-slapd --enable-slurpd --enable-bdb --enable-local -enable-passwd --enable-static --enable-FEATURE --with-PACKAGE --enable-syslog enable-ldap --with-readline $ make depend $make $ cd tests $ make $ su – Password: <root password> #cd /tmp/openldap-2.2.17 #make install Editez le fichier de configuration Utilisez votre éditeur favori pour ouvrir l’exemple fourni de slapd.conf (habituellement installé dans /etc/openldap/slapd.conf)pour contenir la définition de la base de données BDB sous la forme: database bdb suffix “dc=<MY-DOMAIN>,dc=<COM>” rootdn “cn=Manager,dc=<MY-DOMAIN>,dc=<COM>” rootpw secret directory /var/openldap-data Soyez sûr de remplacer <MY-DOMAIN> et <COM> avec les domain component approprié de votre nom de domaine .Par exemple, nic.cctld, utilisera: database bdb suffix "dc=nic,dc=cctld" rootdn "cn=Manager,dc=nic,dc=cctld" rootpw secret directory /var/openldap-data Vous devez être certain de spécifier un répertoire où les fichiers index doivent être crées. Vous avez besoin de créer ce répertoire avec les droits appropriés devant permettre à slapd d’ y écrire. #mkdir –p /var/openldap-data #chmod –R 700 /var/openldap-data Démarrer SLAPD Vous pourrez maintenant démarrer le serveur autonome LDAP, en exécutant la commande : slapd. Pour vérifier si le serveur fonctionne et est bien configuré, vous pourrez faire une recherche sur le serveur avec ldapsearch. ldapsearch -x -b ‘’ -s base ‘(objectclass=*)’ namingContexts Notons que l’utilisation des simples quotes autour des paramètres de commande évite que les caractères spéciaux soient interprétés par le shell. Ceci devrait retourner: dn: namingContexts: dc=nic,dc=cctld Ajouter les entrées initiales à votre annuaire Vous utiliserez ldapadd pour ajouter des entrées à votre annuaire LDAP. ldapadd requiert une entrée au format LDIF. Nous le ferons en deux étapes: o Créer un fichier LDIF o Exécuter ldapadd Utiliser votre éditeur favori et créer un fichier LDIF qui contient : dn:dc=nic,dc=cctld objectClass:dcObject objectClass:organization o:CCTLD COMPANY dc:cctld dn:cn=Manager,dc=nic,dc=cctld objectClass:organizationalRole cn:Manager Maintenant vous pouvez insérer ces entrées dans votre annuaire en utilisant la commande ldapadd. ldapadd -x -D "cn=Manager,dc=nic,dc=cctld" -W -f cctld.ldif Où cctld.ldif est le fichier que vous avez crée en haut Voir si cela fonctionne Maintenant nous pourrons vérifier si les entrées ajoutées sont dans l’annuaire. Vous pourrez utiliser n’importe quel client LDAP pour faire ceci, mais notre exemple utilise l’outil ldapsearch ldapsearch -x -b ‘dc=nic,dc=cctld’ ‘(objectclass=*)’ Cette commande recherchera et affichera chaque entrée de la base de données. Vous êtes maintenant en mesure d’ajouter plusieurs entrées en utilisant ldapadd ou d’autres client LDAP, expérimenté avec diverses options de configuration, backend arrangements, etc… Bind et LDAP Télécharger bind-9.3.0 sur www.isc.org Télécharger bind-sdb-ldap-1.0-beta et dnszone.schema www.venaas.no/ldap/bind-sdb Télécharger localzone.schema à partir de http://www.trstech.net/registry/localzone.schema 1-Maintenir votre repertoire schéma de ldap # cp /tmp/dnszone.schema /etc/openldap/schema/ #cp /tmp/localzone.schema /etc/openldap/schema/ Soyez sûr que root est le propriétaire de ces deux fichiers. 2-Mettre à jour votre fichier slapd.conf en y ajoutant les lignes suivantes: include include include include /etc/openldap/schema/core.schema /etc/openldap/schema/cosine.schema /etc/openldap/schema/dnszone.schema /etc/openldap/schema/localzone.schema # index relativeDomainName,zoneName pres,eq index nSRecord,aRecord,sOARecord,mXRecord pres,eq 3-Installation $cd /tmp $tar -xvzf /tmp/bind-9.3.0.tar.gz $tar -xvzf /tmp/bind-sdb-1.0.tar.gz $cp /tmp/bind-sdb-1.0/ldapdb.c /tmp/bind-9.3.0/bin/named $cp /tmp/bind-sdb-1.0/ldapdb.h /tmp/bind-9.3.0/bin/named/include/ 4-Editer avec votre éditeur favori /tmp/bind-9.3.0/bin/named/Makefile.in et y ajouter les lignes suivantes : DBDRIVER_OBJS = ldapdb.@O@ DBDRIVER_SRCS = ldapdb.c DBDRIVER_INCLUDES = -I/usr/local/include DBDRIVER_LIBS = -L/usr/local/lib -lldap –llber 5-Editer /tmp/bind-9.3.0/bin/named/main.c puis ajouter : o la ligne # include <ldapdb.h> below # include "xxdb.h" o la ligne ldapdb_init(); below xxdb_init(); o la ligne ldapdb_clear(); below xxdb_clear(); 6-Après ces changements, vous êtes prêt pour créer le binaire de LDAP en éxécutant: $cd /tmp/bind-9.3.0/ $./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin -libexecdir=/usr/libexec --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib --oldincludedir=/usr/include/ --enable-static --enable-shared --enable-fast-install --with-gnu-ld with-pic $make $su – Password: <root password> #cd /tmp/bind-9.3.0 #make install Exécuter named -c /etc/namedb/named.conf –u bind -g et regarder les messages d’erreurs 7- créez un fichier (cctld.ldif) avec des données de zone ( cctld Zone et deux sous-domaines : domain1 et domain2) dn:relativeDomainName=@,dc=nic,dc=cctld objectClass:dNSZone objectClass:zonePerson relativeDomainName:@ zoneName:cctld dNSClass:IN proprietaire: Republic of sOARecord: ns1.cctld.net. Admin.mail.cctld. 2004060101 604800 3600 technical-contact:Alain AINA technical-contact: ISOC EDU technical-contact: Email: [email protected] admin-contact: ISOC admin-contact: US admin-contact:Tel:+1711112255555 Email:[email protected] nSRecord:ns1.cctld.net. nSRecord:ns2.isoc.org. nSRecord:ns3.icann.org. nSRecord:ns4.nsrc.org. dn:relativeDomainName=domain1,dc=nic,dc=cctld objectClass:dNSZone objectClass:zonePerson relativeDomainName:domain1 zoneName:cctld dNSClass:IN proprietaire:CLIENT1 dateacquis:20040604041800Z validite:20060605164000Z technical-contact: ALAIN AINA technical-contact:AIT, bangkok technical-contact:Tel:+78123455678-Email:[email protected] admin-contact: John CRAIN admin-contact:ICANN admin-contact:Tel:+2282255555 - Email: [email protected] dNSTTL:7200 nSRecord: adjo.cafe.org. nSRecord: ns.psg.com. dn:relativeDomainName=domain2,dc=nic,dc=cctld objectClass:dNSZone objectClass:zonePerson relativeDomainName:domain2 21600 3600 zoneName:cctld dNSClass:IN proprietaire:Client2 dateacquis:20040604041800Z validite:20060605164000Z technical-contact: samuel SODATONOU technical-contact:Tel:+22822192245 admin-contact: Steve Huter admin-contact:Tel:+1645662219235 - Email: [email protected] dNSTTL:7200 nSRecord: localhost.cctld. nSRecord: ns.ripe.net. 8-Ajoutez le fichier cctldzone.ldif à votre base ldap: #ldapadd -x -D ‘’cn=Manager,dc=nic,dc=cctld’’ -W -f cctldzone.ldif Password: <ldap Manager password> 9-Editez /etc/named.conf et insérez les lignes suivantes zone "cctld" IN { type master ; database "ldap ldap://localhost/dc=nic,dc=cctld??sub? 172800"; }; Après modification de votre fichier named.conf , redémarrer le service named et exécutez dig pour rechercher les enregistrements NS et SOA de votre cctld, domain1.cctld et domain2.cctld . dig @localhost cctld soa +norec dig @localhost cctld ns +norec dig @localhost domain1.cctld dig @localhost. domain2.cctld Installation de php-ldapadmin NB: Vous avez besoin de apache + php avec support ldap Obtenez le fichier source de phpldapadmin-0.9.4b.tar.gz sur http://phpldapadmin.sourceforge.net/download.php #mkdir –p /var/www/html/ldap # cd /var/www/html/ldap # tar -xvzf /tmp/phpldapadmin-0.9.4b.tar.gz # mv phpldapadmin-0.9.4b ./phpldapadmin #cd phpldapadmin #cp config.php.example ./config.php Editez le fichier config.php et changez le nom du serveur, la base, le binddn et le mot de passé de bind Exemple $servers[$i][‘host’] = ‘ldap://localhost’; $servers[$i][‘base’] = ‘dc=nic,dc=cctld’; $servers[$i][‘port’] = 389; $servers[$i][‘auth_type’] = ‘config’; $servers[$i][‘login_dn’] = ‘cn=Manager,dc=nic,dc=cctld’; $servers[$i][‘login_pass’] = ‘secret’; Après avoir changé votre fichier config.php, vous pouvez vous connectez avec votre navigateur Web à l’adresse htpp://ip_addresse/ldap/phpldapadmin Autres clients LDAP LDAPBROWSER : http://www.iit.edu/~gawojar/ldap/ WEB2LDAP : http://freshmeat.net/projects/web2ldap/ GQ :http://biot.com/gq/ Reference: http://www.trstech.net/registry
Documents pareils
TP Java EE
– sous Windows, il vous faudra configurer le fichier slapd.conf.
– sous Linux, le fichier slapd.conf a été remplacé par un répertoire slapd.d qui contient des
fichiers LDIF.
La première étape dans ...