<-
Apache > Serveur HTTP > Documentation > Version 2.3 > Modules

Module Apache mod_ldap

Langues Disponibles:  en  |  fr 

Description:Conservation des connexions LDAP et services de mise en cache du résultat à destination des autres modules LDAP
Statut:Extension
Identificateur de Module:ldap_module
Fichier Source:util_ldap.c
Compatibilité:Disponible à partir de la version 2.0.41 d'Apache

Sommaire

Ce module a été conçu dans le but d'améliorer les performances des sites web s'appuyant sur des connexions en arrière-plan vers des serveurs LDAP. Il ajoute aux fonctions fournies par les bibliothèques standards LDAP la conservation des connexions LDAP ainsi qu'un cache LDAP partagé en mémoire.

Pour activer ce module, le support LDAP doit être compilé dans apr-util. Pour ce faire, on ajoute l'option --with-ldap au script configure lorsqu'on construit Apache.

Le support SSL/TLS est conditionné par le kit de développement LDAP qui a été lié à APR. Au moment où ces lignes sont écrites, APR-util supporte OpenLDAP SDK (version 2.x ou supérieure), Novell LDAP SDK, Mozilla LDAP SDK, le SDK LDAP propre à Solaris (basé sur Mozilla), le SDK LDAP propre à Microsoft, ou le SDK iPlanet (Netscape). Voir le site web APR pour plus de détails.

Directives

Sujets

top

Exemple de configuration

Ce qui suit est un exemple de configuration qui utilise mod_ldap pour améliorer les performances de l'authentification HTTP de base fournie par mod_authnz_ldap.

# Active la conservation des connexions LDAP et le cache partagé en
# mémoire. Active le gestionnaire de statut du cache LDAP.
# Nécessite le chargement de mod_ldap et de mod_authnz_ldap.
# Remplacez "votre-domaine.example.com" par le nom de votre
# domaine.

LDAPSharedCacheSize 500000
LDAPCacheEntries 1024
LDAPCacheTTL 600
LDAPOpCacheEntries 1024
LDAPOpCacheTTL 600

<Location /statut-ldap>
SetHandler ldap-status
Order deny,allow
Deny from all
Allow from votre-domaine.example.com
Satisfy any
AuthType Basic
AuthName "Protégé par LDAP"
AuthBasicProvider ldap
AuthLDAPURL ldap://127.0.0.1/dc=example,dc=com?uid?one
Require valid-user
</Location>

top

Conservation des connexions LDAP

Les connexions LDAP sont conservées de requête en requête. Ceci permet de rester connecté et identifié au serveur LDAP, ce dernier étant ainsi prêt pour la prochaine requête, sans avoir à se déconnecter, reconnecter et réidentifier. Le gain en performances est similaire à celui des connexions persistantes (keepalives) HTTP.

Sur un serveur très sollicité, il est possible que de nombreuses requêtes tentent d'accéder simultanément à la même connexion au serveur LDAP. Lorsqu'une connexion LDAP est utilisée, Apache en crée une deuxième en parallèle à la première, ce qui permet d'éviter que le système de conservation des connexions ne devienne un goulot d'étranglement.

Il n'est pas nécessaire d'activer explicitement la conservation des connexions dans la configuration d'Apache. Tout module utilisant le module ldap pour accéder aux services LDAP partagera le jeu de connexions.

Les connexions LDAP peuvent garder la trace des données d'identification du client ldap utilisées pour l'identification auprès du serveur LDAP. Ces données peuvent être fournies aux serveurs LDAP qui ne permettent pas les connexions anonymes au cours lors des tentatives de sauts vers des serveurs alternatifs. Pour contrôler cette fonctionnalité, voir les directives LDAPReferrals et LDAPReferralHopLimit. Cette fonctionnalité est activée par défaut.

top

Cache LDAP

Pour améliorer les performances, mod_ldap met en oeuvre une stratégie de mise en cache agressive visant à minimiser le nombre de fois que le serveur LDAP doit être contacté. La mise en cache peut facilement doubler et même tripler le débit d'Apache lorsqu'il sert des pages protégées par mod_authnz_ldap. De plus, le serveur LDAP verra lui-même sa charge sensiblement diminuée.

mod_ldap supporte deux types de mise en cache LDAP : un cache recherche/identification durant la phase de recherche/identification et deux caches d'opérations durant la phase de comparaison. Chaque URL LDAP utilisée par le serveur a son propre jeu d'instances dans ces trois caches.

Le cache recherche/identification

Les processus de recherche et d'identification sont les opérations LDAP les plus consommatrices en temps, en particulier si l'annuaire est de grande taille. Le cache de recherche/identification met en cache toutes les recherches qui ont abouti à une identification positive. Les résultats négatifs (c'est à dire les recherches sans succès, ou les recherches qui n'ont pas abouti à une identification positive) ne sont pas mis en cache. La raison de cette décision réside dans le fait que les connexions avec des données d'identification invalides ne représentent qu'un faible pourcentage du nombre total de connexions, et ainsi, le fait de ne pas mettre en cache les données d'identification invalides réduira d'autant la taille du cache.

mod_ldap met en cache le nom d'utilisateur, le DN extrait, le mot de passe utilisé pour l'identification, ainsi que l'heure de l'identification. Chaque fois qu'une nouvelle connexion est initialisée avec le même nom d'utilisateur, mod_ldap compare le mot de passe de la nouvelle connexion avec le mot de passe enregistré dans le cache. Si les mots de passe correspondent, et si l'entrée du cache n'est pas trop ancienne, mod_ldap court-circuite la phase de recherche/identification.

Le cache de recherche/identification est contrôlé par les directives LDAPCacheEntries et LDAPCacheTTL.

Les caches d'opérations

Au cours des opérations de comparaison d'attributs et de noms distinctifs (DN), mod_ldap utilise deux caches d'opérations pour mettre en cache les opérations de comparaison. Le premier cache de comparaison sert à mettre en cache les résultats de comparaisons effectuées pour vérifier l'appartenance à un groupe LDAP. Le second cache de comparaison sert à mettre en cache les résultats de comparaisons entre DNs.

Notez que, lorsque l'appartenance à un groupe est vérifiée, toute comparaison de sous-groupes est mise en cache afin d'accélérer les comparaisons de sous-groupes ultérieures.

Le comportement de ces deux caches est contrôlé par les directives LDAPOpCacheEntries et LDAPOpCacheTTL.

Superviser le cache

mod_ldap possède un gestionnaire de contenu qui permet aux administrateurs de superviser les performances du cache. Le nom du gestionnaire de contenu est ldap-status, et on peut utiliser les directives suivantes pour accéder aux informations du cache de mod_ldap :

<Location /serveur/infos-cache>
SetHandler ldap-status
</Location>

En se connectant à l'URL http://nom-serveur/infos-cache, l'administrateur peut obtenir un rapport sur le statut de chaque cache qu'utilise mod_ldap. Notez que si Apache ne supporte pas la mémoire partagée, chaque instance de httpd possèdera son propre cache, et chaque fois que l'URL sera rechargée, un résultat différent pourra être affiché, en fonction de l'instance de httpd qui traitera la requête.

top

Utiliser SSL/TLS

La possibilité de créer des connexions SSL et TLS avec un serveur LDAP est définie par les directives LDAPTrustedGlobalCert, LDAPTrustedClientCert et LDAPTrustedMode. Ces directives permettent de spécifier l'autorité de certification (CA), les certificats clients éventuels, ainsi que le type de chiffrement à utiliser pour la connexion (none, SSL ou TLS/STARTTLS).

# Etablissement d'une connexion SSL LDAP sur le port 636.
# Nécessite le chargement de mod_ldap et mod_authnz_ldap.
# Remplacez "votre-domaine.example.com" par le nom de votre
# domaine.

LDAPTrustedGlobalCert CA_DER /certs/fichier-certificat.der

<Location /statut-ldap>
SetHandler ldap-status
Order deny,allow
Deny from all
Allow from votre-domaine.example.com
Satisfy any
AuthType Basic
AuthName "Protégé par LDAP"
AuthBasicProvider ldap
AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?one
Require valid-user
</Location>

# Etablissement d'une connexion TLS LDAP sur le port 389.
# Nécessite le chargement de mod_ldap et mod_authnz_ldap.
# Remplacez "votre-domaine.example.com" par le nom de votre
# domaine.

LDAPTrustedGlobalCert CA_DER /certs/fichier-certificat.der

<Location /statut-ldap>
SetHandler ldap-status
Order deny,allow
Deny from all
Allow from votre-domaine.example.com
Satisfy any
AuthType Basic
AuthName "Protégé par LDAP"
AuthBasicProvider ldap
AuthLDAPURL ldap://127.0.0.1/dc=example,dc=com?uid?one TLS
Require valid-user
</Location>

top

Certificats SSL/TLS

Les différents SDKs LDAP disposent de nombreuses méthodes pour définir et gérer les certificats des clients et des autorités de certification (CA).

Si vous avez l'intention d'utiliser SSL ou TLS, lisez cette section ATTENTIVEMENT de façon à bien comprendre les différences de configurations entre les différents SDKs LDAP supportés.

SDK Netscape/Mozilla/iPlanet

Les certificat de CA sont enregistrés dans un fichier nommé cert7.db. Le SDK ne dialoguera avec aucun serveur LDAP dont le certificat n'a pas été signé par une CA spécifiée dans ce fichier. Si des certificats clients sont requis, un fichier key3.db ainsi qu'un mot de passe optionnels peuvent être spécifiés. On peut aussi spécifier le fichier secmod si nécessaire. Ces fichiers sont du même format que celui utilisé par les navigateurs web Netscape Communicator ou Mozilla. Le moyen le plus simple pour obtenir ces fichiers consiste à les extraire de l'installation de votre navigateur.

Les certificats clients sont spécifiés pour chaque connexion en utilisant la directive LDAPTrustedClientCert et en se référant au certificat "nickname". On peut éventuellement spécifier un mot de passe pour déverrouiller la clé privée du certificat.

Le SDK supporte seulement SSL. Toute tentative d'utilisation de STARTTLS engendrera une erreur lors des tentatives de contacter le serveur LDAP pendant l'exécution.

# Spécifie un fichier de certificats de CA Netscape
LDAPTrustedGlobalCert CA_CERT7_DB /certs/cert7.db
# Spécifie un fichier key3db optionnel pour le support des # certificats clients
LDAPTrustedGlobalCert CERT_KEY3_DB /certs/key3.db
# Spécifie le fichier secmod si nécessaire
LDAPTrustedGlobalCert CA_SECMOD /certs/secmod
<Location /statut-ldap>
SetHandler ldap-status
Order deny,allow
Deny from all
Allow from votre-domaine.example.com
Satisfy any
AuthType Basic
AuthName "Protégé par LDAP"
AuthBasicProvider ldap
LDAPTrustedClientCert CERT_NICKNAME <nickname> [mot de passe]
AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?one
Require valid-user
</Location>

SDK Novell

Un ou plusieurs certificats de CA doivent être spécifiés pour que le SDK Novell fonctionne correctement. Ces certificats peuvent être spécifiés sous forme de fichiers au format binaire DER ou codés en Base64 (PEM).

Note: Les certificats clients sont spécifiés globalement plutôt qu'à chaque connexion, et doivent être spécifiés à l'aide de la directive LDAPTrustedGlobalCert comme ci-dessous. Définir des certificats clients via la directive LDAPTrustedClientCert engendrera une erreur qui sera journalisée, au moment de la tentative de connexion avec le serveur LDAP.

Le SDK supporte SSL et STARTTLS, le choix étant défini par le paramètre de la directive LDAPTrustedMode. Si une URL de type ldaps:// est spécifiée, le mode SSL est forcé, et l'emporte sur cette directive.

# Spécifie deux fichiers contenant des certificats de CA
LDAPTrustedGlobalCert CA_DER /certs/cacert1.der
LDAPTrustedGlobalCert CA_BASE64 /certs/cacert2.pem
# Spécifie un fichier contenant des certificats clients # ainsi qu'une clé
LDAPTrustedGlobalCert CERT_BASE64 /certs/cert1.pem
LDAPTrustedGlobalCert KEY_BASE64 /certs/key1.pem [mot de passe]
# N'utilisez pas cette directive, sous peine de provoquer # une erreur
#LDAPTrustedClientCert CERT_BASE64 /certs/cert1.pem

SDK OpenLDAP

Un ou plusieurs certificats de CA doivent être spécifiés pour que le SDK OpenLDAP fonctionne correctement. Ces certificats peuvent être spécifiés sous forme de fichiers au format binaire DER ou codés en Base64 (PEM).

Les certificats clients sont spécifiés pour chaque connexion à l'aide de la directive LDAPTrustedClientCert.

La documentation du SDK prétend que SSL et STARTTLS sont supportés ; cependant, STARTTLS semble ne pas fonctionner avec toutes les versions du SDK. Le mode SSL/TLS peut être défini en utilisant le paramètre de la directive LDAPTrustedMode. Si une URL de type ldaps:// est spécifiée, le mode SSL est forcé. La documentation OpenLDAP indique que le support SSL (ldaps://) tend à être remplacé par TLS, bien que le mode SSL fonctionne toujours.

# Spécifie deux fichiers contenant des certificats de CA
LDAPTrustedGlobalCert CA_DER /certs/cacert1.der
LDAPTrustedGlobalCert CA_BASE64 /certs/cacert2.pem
<Location /statut-ldap>
SetHandler ldap-status
Order deny,allow
Deny from all
Allow from votre-domaine.example.com
LDAPTrustedClientCert CERT_BASE64 /certs/cert1.pem
LDAPTrustedClientCert KEY_BASE64 /certs/key1.pem
Satisfy any
AuthType Basic
AuthName "Protégé par LDAP"
AuthBasicProvider ldap
AuthLDAPURL ldaps://127.0.0.1/dc=example,dc=com?uid?one
Require valid-user
</Location>

SDK Solaris

SSL/TLS pour les bibliothèques LDAP propres à Solaris n'est pas encore supporté. Si nécessaire, installez et utilisez plutôt les bibliothèques OpenLDAP.

SDK Microsoft

La configuration des certificats SSL/TLS pour les bibliothèques LDAP propres à Microsoft s'effectue à l'intérieur du registre système, et aucune directive de configuration n'est requise.

SSL et TLS sont tous deux supportés en utilisant des URLs de type ldaps://, ou en définissant la directive LDAPTrustedMode à cet effet.

Note: L'état du support des certificats clients n'est pas encore connu pour ce SDK.

top

LDAPCacheEntries Directive

Description:Nombre maximum d'entrées dans le cache LDAP primaire
Syntaxe:LDAPCacheEntries nombre
Défaut:LDAPCacheEntries 1024
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier la taille maximale du cache LDAP primaire. Ce cache contient les résultats de recherche/identification positifs. Définissez-la à 0 pour désactiver la mise en cache des résultats de recherche/identification positifs. La taille par défaut est de 1024 recherches en cache.

top

LDAPCacheTTL Directive

Description:Durée pendant laquelle les entrées du cache restent valides.
Syntaxe:LDAPCacheTTL secondes
Défaut:LDAPCacheTTL 600
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier la durée (en secondes) pendant laquelle une entrée du cache de recherche/identification reste valide. La valeur par défaut est de 600 secondes (10 minutes).

top

LDAPConnectionTimeout Directive

Description:Spécifie le délai d'attente en secondes de la socket de connexion
Syntaxe:LDAPConnectionTimeout secondes
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier le délai d'attente (en secondes) pendant lequel le module tentera de se connecter au serveur LDAP. Si une tentative de connexion n'a pas abouti au bout de ce délai, soit une erreur sera renvoyée, soit le module tentera de se connecter à un serveur LDAP secondaire s'il en a été spécifié un. La valeur par défaut est de 10 secondes.

top

LDAPOpCacheEntries Directive

Description:Nombre d'entrées utilisées pour mettre en cache les opérations de comparaison LDAP
Syntaxe:LDAPOpCacheEntries nombre
Défaut:LDAPOpCacheEntries 1024
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier le nombre d'entrées que mod_ldap va utiliser pour mettre en cache les opérations de comparaison LDAP. La valeur par défaut est de 1024 entrées. Si elle est définie à 0, la mise en cache des opérations de comparaison LDAP est désactivée.

top

LDAPOpCacheTTL Directive

Description:Durée pendant laquelle les entrées du cache d'opérations restent valides
Syntaxe:LDAPOpCacheTTL secondes
Défaut:LDAPOpCacheTTL 600
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier la durée (en secondes) pendant laquelle les entrées du cache d'opérations restent valides. La valeur par défaut est de 600 secondes.

top

LDAPReferralHopLimit Directive

Description:Le nombre maximum de redirections vers des serveurs alternatifs (referrals) avant l'abandon de la requête LDAP.
Syntaxe:LDAPReferralHopLimit nombre
Défaut:LDAPReferralHopLimit 5
Contexte:répertoire, .htaccess
Annuler:AuthConfig
Statut:Extension
Module:mod_ldap

Si elle est activée par la directive LDAPReferrals, cette directive permet de définir le nombre maximum de sauts vers des serveurs alternatifs (referrals) avant l'abandon de la requête LDAP.

top

LDAPReferrals Directive

Description:Active la redirection vers des serveurs alternatifs au cours des requêtes vers le serveur LDAP.
Syntaxe:LDAPReferrals On|Off
Défaut:LDAPReferrals On
Contexte:répertoire, .htaccess
Annuler:AuthConfig
Statut:Extension
Module:mod_ldap

Certains serveurs LDAP partagent leur annuaire en plusieurs domaines et utilisent le système des redirections (referrals) pour aiguiller un client lorsque les limites d'un domaine doivent être franchies. En définissant LDAPReferrals On, les redirections seront prises en compte (et bien entendu, en définissant LDAPReferrals Off, les redirections seront ignorées). La directive LDAPReferralHopLimit complète cette directive en définissant le nombre maximum de redirections à suivre avant l'abandon de la requête LDAP. Lorsque le traitement des redirections est activé, les données d'identification du client seront fournies, via un appel (callback) de réidentification, à tout serveur LDAP qui en fera la demande.

top

LDAPSharedCacheFile Directive

Description:Définit le fichier du cache en mémoire partagée
Syntaxe:LDAPSharedCacheFile chemin/nom-fichier
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier le chemin et le nom du fichier du cache en mémoire partagée. Si elle n'est pas définie, la mémoire partagée anonyme sera utilisée si la plate-forme la supporte.

top

LDAPSharedCacheSize Directive

Description:Taille en octets du cache en mémoire partagée
Syntaxe:LDAPSharedCacheSize octets
Défaut:LDAPSharedCacheSize 500000
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier le nombre d'octets à allouer pour le cache en mémoire partagée. La valeur par défaut est 500kb. Si elle est définie à 0, le cache en mémoire partagée ne sera pas utilisé.

top

LDAPTrustedClientCert Directive

Description:Définit le nom de fichier contenant un certificat client ou un alias renvoyant vers un certificat client spécifique à une connexion. Tous les SDK LDAP ne supportent pas les certificats clients par connexion.
Syntaxe:LDAPTrustedClientCert type chemin/nom-fichier/alias [mot de passe]
Contexte:configuration du serveur, serveur virtuel, répertoire, .htaccess
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier le chemin et le nom de fichier ou l'alias d'un certificat client par connexion utilisé lors de l'établissement d'une connexion SSL ou TLS avec un serveur LDAP. Les sections directory ou location peuvent posséder leurs propres configurations de certificats clients. Certains SDK LDAP (en particulier Novell) ne supportent pas les certificats clients par connexion, et renvoient une erreur lors de la connexion au serveur LDAP si vous tenter d'utiliser cette directive (Utilisez à la place la directive LDAPTrustedGlobalCert pour les certificats clients sous Novell - Voir plus haut le guide des certificats SSL/TLS pour plus de détails). Le paramètre type spécifie le type du certificat en cours de définition, en fonction du SDK LDAP utilisé. Les types supportés sont :

top

LDAPTrustedGlobalCert Directive

Description:Définit le nom de fichier ou la base de données contenant les Autorités de Certification de confiance globales ou les certificats clients globaux
Syntaxe:LDAPTrustedGlobalCert type chemin/nom-fichier [mot de passe]
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier le chemin et le nom du fichier contenant les certificats des CA de confiance et/ou les certificats clients du système global que mod_ldap utilisera pour établir une connexion SSL ou TLS avec un serveur LDAP. Notez que toute information relative aux certificats spécifiée en utilisant cette directive s'applique globalement à l'ensemble de l'installation du serveur. Certains SDK LDAP (en particulier Novell) nécessitent la définition globale de tous les certificats clients en utilisant cette directive. La plupart des autres SDK nécessitent la définition des certificats clients dans une section Directory ou Location en utilisant la directive LDAPTrustedClientCert. Si vous ne définissez pas ces directives correctement, une erreur sera générée lors des tentatives de contact avec un serveur LDAP, ou la connexion échouera silencieusement (Voir plus haut le guide des certificats SSL/TLS pour plus de détails). Le paramètre type spécifie le type de certificat en cours de définition, en fonction du SDK LDAP utilisé. Les types supportés sont :

top

LDAPTrustedMode Directive

Description:Spécifie le mode (SSL ou TLS) à utiliser lors de la connexion à un serveur LDAP.
Syntaxe:LDAPTrustedMode type
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_ldap

Les modes suivants sont supportés :

Les modes ci-dessus ne sont pas supportés par tous les SDK LDAP. Un message d'erreur sera généré à l'exécution si un mode n'est pas supporté, et la connexion au serveur LDAP échouera.

Si une URL de type ldaps:// est spécifiée, le mode est forcé à SSL et la définition de LDAPTrustedMode est ignorée.

top

LDAPVerifyServerCert Directive

Description:Force la vérification du certificat du serveur
Syntaxe:LDAPVerifyServerCert On|Off
Défaut:LDAPVerifyServerCert On
Contexte:configuration du serveur
Statut:Extension
Module:mod_ldap

Cette directive permet de spécifier s'il faut forcer la vérification d'un certificat de serveur lors de l'établissement d'une connexion SSL avec un serveur LDAP.

Langues Disponibles:  en  |  fr