Utiliser l'authentification Digest dans un fichier .htaccess

Configuration d'Apache

Pour utiliser l'authentification Digest, il faut activer le module auth_digest d'Apache. Pour Apache 2, voici l'opération à réaliser:

cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/auth_digest.load auth_digest.load

Redémarrer apache

/etc/init.d/apache2 restart

Si tout se passe bien, vous devriez avoir les deux lignes suivantes dans le fichier /var/log/apache2/error.log

notice - Digest: generating secret for digest authentication ...
notice - Digest: done

Création du fichier .htaccess

Voici un exemple de fichier .htaccess

AuthName        "Admin Zone"
AuthType        Digest
AuthDigestFile    "/var/www/ht/.htpasswd"

require user fred

Création du fichier .htpasswd

Pour créer un nouvel utilisateur, utiliser la commande .htdigest de cette façon

# htdigest -c /home/nemako/www/secret/.htpasswd realm username

A noter que le champ AuthName du fichier .htaccess doit correspondre avec le realm utilisé lors de la création de l'utilisateur. Ainsi la commande

# htdigest -c /var/www/ht/.htpasswd "Admin Zone" fred

donnera le fichier .htpasswd

fred:Admin Zone:e97f78f0a798c7f8bac3182c527edd74

Activer l'utilisation des fichiers .htaccess sous Apache2

Dans le fichier

/etc/apache2/sites-available/default

Chercher la ligne

<Directory /var/www/>

Et modifier

AllowOverride None

par

AllowOverride All

Erreurs courantes

Si votre authentification ne fonctionne pas. Regarder le fichier de log:

tail -f /var/log/apache2/error.log

Absence du module auth_digest

Erreur
alert - /var/www/ht/.htaccess: Invalid command 'AuthDigestFile', perhaps mis-spelled or defined by a module not included in the server configuration
Solution
cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/auth_digest.load auth_digest.load

Mauvaise directive pour indiquer le fichier utilisateur

Erreur
crit - configuration error:  couldn't check user.  No user file?: /ht
Solution

Utiliser la directive AuthDigestFile au lieu de AuthUserFile. De même uiliser AuthDigestGroupFile au lieu de AuthGroupFile.

le Realm ne correspond pas avec celui de l'utilisateur

Erreur
error - Digest: user `fred' in realm `Admin Zone' not found: /ht
Solution

Créer l'utilisateur avec le même realm que celui définit dans le fichier .htaccess

# htdigest -c /home/nemako/www/secret/.htpasswd "Admin Zone" username

Dans .htaccess:

AuthName        "Admin Zone"

Liens