Comme n'importe quel serveur web il est possible, avec lighttpd, de protéger directement l'accès à certaines pages ou répertoires entier par un mot de passe. Cette protection par mot de passe est indépendante de l'application web sous-jacente. Elle s'effectue avant tout accès à la page et donc à l'application. L'association login/mot de passe peut être faite manuellement ou cherché dans une base de donnée. Nous allons voir ici comme faire cette recherche dans une base LDAP.
Configuration de l'authentification LDAP
Nous allons effectué notre configuration dans le fichier
/etc/lighttpd/conf-available/05-auth.conf
. Il faut d'abord configurer
par quel mécanisme l'authentification va se faire. Dans le cas présenté ici, il
s'agira de l'utilisation de LDAP. Toute référence à un autre système
d'authentification comme plain
doit être commenté:
server.modules += ( "mod_auth" )
auth.backend = "ldap"
auth.backend.ldap.hostname = "localhost"
auth.backend.ldap.base-dn = "ou=People,dc=mydomain,dc=com"
auth.backend.ldap.filter = "(uid=$)"
auth.backend.ldap.bind-dn = "cn=user,dc=mydomain,dc=com"
auth.backend.ldap.bind-pw = "secret"
auth.backend.ldap.hostname
: adresse du serveurauth.backend.ldap.base-dn
: arbre où sont stockés les utilisateursauth.backend.ldap.filter
: filtre à appliquer pour obtenir les utilisateursauth.backend.ldap.bind-dn
: identifiant à utiliser pour se connecter au serveur LDAPauth.backend.ldap.bind-pw
: le mot de passe associé
Les paramètres auth.backend.ldap.bind-dn
et
:code`auth.backend.ldap.bind-pw` ne sont nécessaires que si le serveur LDAP
requiert un compte pour pouvoir lire les différentes informations.
Configuration des répertoires à protéger
Il convient ensuite de configurer les répertoire qui doivent être sous le
contrôle de mot de passe. Par exemple pour protéger le contenu de deux
répertoires /repertoire_securise
et /autre_repertoire_securise
:
auth.require = ( "/repertoire_securise/" =>
(
"method" => "basic",
"realm" => "Password protected area 1",
"require" => "valid-user"
),
"/autre_repertoire_securise/" =>
(
"method" => "basic",
"realm" => "Password protected area 2",
"require" => "user=admin1|user=admin2"
),
),
D'autre répertoire peuvent êtres ajouté à le liste de la même façon.
method
: type de méthode demandé au navigateur pour l'authentification basic, plain, digest ou htdigest. L'authentification LDAP sous Debian ne marche qu'avec basic (erreur diverse pour les autres: non gestion pour plain et digest)realm
: message affiché dans la boite de dialogue de connection.require
: limitation sur les utilisateurs: une liste d'utilisateur séparés par|
ouvalid-user
pour n'importe quel utilisateur de la base.
Activation de la configuration
Comme pour toutes les configurations de lighttpd, pour l'activer il convient de
créer un lien vers le fichier de configuration dans le répertoire
/etc/lighttpd/conf-enable
et de redémarrer lighttpd:
# ln -s /etc/lighttpd/conf-available/05-auth.conf /etc/lighttpd/conf-enabled/
# /etc/init.d/lighttpd restart