Précédent Remonter Suivant

2  OpenLDAP

OpenLDAP est un annuaire open-source qui implémente le protocole LDAP. Pour récupérer les sources d'OpenLDAP ainsi que la documentation officielle, une seule adresse : http://www.openldap.org .

2.1  Installation

OpenLDAP nécessite que BerkeleyDB (http://www.sleepycat.com ) soit installé, ce qui ne pose pas de problème particulier, que ce soit une installation à partir d'un binaire ou de sources.

En revanche, pour installer OpenLDAP à partir des sources (afin d'avoir la dernière version disponible, la 2.2.5, qui nécessite d'ailleurs d'avoir la version 4.2 de BerkeleyDB ), il faut procéder ainsi, une fois que l'on a décompressé les sources et que l'on s'est placé dans le répertoire principal des sources :
$ export CPPFLAGS='-I/usr/local/BerkeleyDB.4.2/include'
       # adapter le chemin si celui-ci est incorrect : c'est le chemin d'installation de BerkeleyDB
$ export LDFLAGS='-L/usr/local/BerkeleyDB.4.2/lib'
$ ./configure --with-tls=no --with-cyrus-sasl=no
       # les 2 paramètres permettent de désactiver le support tls et cyrus sasl 
$ make depend
$ make
$ make test
$ su root -c "make install"
(consulter le fichier INSTALL dans le répertoire principal des sources d'OpenLDAP , ainsi que le guide d'installation sur http://www.openldap.org pour plus d'informations, et la section 5.1 pour voir comment utiliser OpenLDAP avec TLS)

2.2  Configuration

Pour configurer OpenLDAP , il faut modifier le fichier slapd.conf (situé par défaut, si on a installé depuis les sources, dans le répertoire /usr/local/etc/openldap).

Vers la fin de ce fichier, il faut avoir les lignes suivantes :
allow bind_v2
pour autoriser les clients qui utilisent le protocole LDAPv2 (par défaut seuls ceux utilisant LDAPv3 sont autorisés). En effet, squid_ldap_auth peut utiliser LDAPv2, donc dans ce cas cette ligne devient indispensable (la version de squid_ldap_auth fournie avec Squid à partir de la version 2.5.STABLE3 permet d'indiquer la version de LDAP à utiliser à l'aide du paramètre -v ; la version la plus récente de Squid existant en package RedHat au moment de la rédaction de ce document est la 2.5.STABLE1).
database bdb
suffix "dc=example,dc=com"
à remplacer par le bon suffixe
rootdn "cn=Manager,dc=example,dc=com"
à adapter également
rootpw secret
mettre un vrai mot de passe, en clair (déconseillé), ou crypté (par exemple le mot de passe crypté correspondant à "secret" est {SSHA}qmWiSnPhgOfkfmU0JS1XGVgvfA/0GFKu). On peut crypter un mot de passe par exemple avec /usr/local/sbin/slappasswd.

Une fois que le fichier de configuration a été correctement écrit, l'annuaire est prêt à être utilisé.

2.3  Utilisation

Pour utiliser l'annuaire OpenLDAP , il faut tout d'abord exécuter slapd (situé par défaut dans /usr/local/libexec/).

Ensuite, on peut consulter l'annuaire, ajouter, modifier, ou retirer des entrées au moyen de ldapsearch, ldapadd, ldapmodify, ldapdelete (fournis avec OpenLDAP ) et de fichiers LDIF (LDAP Data Interchange Format)... ou bien à l'aide d'outils graphiques comme l'interface php phpLDAPadmin (http://phpldapadmin.sourceforge.net ) ou l'outil java LDAP Browser/Editor (http://www.iit.edu/~gawojar/ldap )...

2.4  Exemple

J'ai défini un annuaire d'exemple correspondant à l'arbre suivant :


Figure 1 : Arbre d'exemple


On a ainsi 4 utilisateurs situés dans l'Organizational Unit (ou) Users, et 2 groupes situés dans l'ou Groups, 2 utilisateurs étant membres du premier groupe, les 2 autres utilisateurs étant membres du deuxième groupe.

Le fichier LDIF correspondant est le suivant :
version: 1

# LDIF Export for: dc=example,dc=com
# Generated by phpLDAPadmin on February 17, 2004 2:52 pm
# Server: Serveur test (localhost)
# Search Scope: sub
# Total entries: 10

# Entry 1: dc=example,dc=com
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
o: my organization
dc: example

# Entry 2: cn=Manager,dc=example,dc=com
dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager

# Entry 3: ou=Groups,dc=example,dc=com
dn: ou=Groups,dc=example,dc=com
ou: Groups
objectClass: top
objectClass: organizationalUnit

# Entry 4: ou=Users,dc=example,dc=com
dn: ou=Users,dc=example,dc=com
ou: Users
objectClass: top
objectClass: organizationalUnit

# Entry 5: cn=bart,ou=Users,dc=example,dc=com
dn: cn=bart,ou=Users,dc=example,dc=com
cn: bart
sn: Bart Simpson
userPassword: azerty
objectClass: person
objectClass: top

# Entry 6: cn=homer,ou=Users,dc=example,dc=com
dn: cn=homer,ou=Users,dc=example,dc=com
cn: homer
objectClass: person
objectClass: top
userPassword: azerty
sn: Homer Simpson

# Entry 7: cn=lisa,ou=Users,dc=example,dc=com
dn: cn=lisa,ou=Users,dc=example,dc=com
cn: lisa
objectClass: person
objectClass: top
userPassword: azerty
sn: Lisa Simpson

# Entry 8: cn=marge,ou=Users,dc=example,dc=com
dn: cn=marge,ou=Users,dc=example,dc=com
cn: marge
objectClass: person
objectClass: top
userPassword: azerty
sn: Marge Simpson

# Entry 9: cn=Parents,ou=Groups,dc=example,dc=com
dn: cn=Parents,ou=Groups,dc=example,dc=com
cn: Parents
objectClass: groupOfNames
objectClass: top
description: groupe des parents
member: cn=homer,ou=Users,dc=example,dc=com
member: cn=marge,ou=Users,dc=example,dc=com

# Entry 10: cn=Enfants,ou=Groups,dc=example,dc=com
dn: cn=Enfants,ou=Groups,dc=example,dc=com
cn: Enfants
objectClass: groupOfNames
objectClass: top
description: groupe des enfants
member: cn=bart,ou=Users,dc=example,dc=com
member: cn=lisa,ou=Users,dc=example,dc=com
Cet annuaire d'exemple servira plus loin dans l'exemple d'authentification par groupes de Squid .


Précédent Remonter Suivant