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 serveur
  • auth.backend.ldap.base-dn: arbre où sont stockés les utilisateurs
  • auth.backend.ldap.filter: filtre à appliquer pour obtenir les utilisateurs
  • auth.backend.ldap.bind-dn: identifiant à utiliser pour se connecter au serveur LDAP
  • auth.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 | ou valid-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