Parmi la multitude de fonctionnalités qu’offrent les fichiers .htaccess, il est possible de restreindre l’accès à un répertoire par un mot de passe.

Cette technique est relativement connue et bien documentée, mais faire un article me permettra de retrouver rapidement la syntaxe exacte la prochaine fois que je chercherai. ;)

Protection d'un répertoire avec un mot de passe sur Apache

Protection d'un répertoire avec un mot de passe sur Apache

Ce n’est pas mon premier article sur .htaccess, j’avais notamment expliqué comment empêcher le listage des répertoires, comment faire une page de maintenance avec un fichier .htaccess, restreindre l’accès à un répertoire par adresse IP, etc.

Très simplement, il suffit de créer un fichier .htaccess à la racine du répertoire à protéger, avec pour contenu (à adapter bien entendu) :

AuthUserFile /path/to/password/password.file
AuthGroupFile /path/to/password/group.file
AuthName « Mot de passe requis »
AuthType Basic

<Limit GET POST>
require valid-user
</Limit>

Explication des champs :

  • AuthUserFile : définit le chemin d’accès absolu vers le fichier contenant les mots de passe, il n’est pas possible d’indiquer un chemin relatif,
  • AuthGroupFile : définit le chemin d’accès vers le fichier contenant les informations de groupe ; si vous n’avez pas besoin d’un tel fichier, vous pouvez mettre « AuthGroupFile /dev/null« ,
  • AuthName : affiche dans le navigateur le texte renseigné (ici « Mot de passe requis »),
  • AuthType Basic : mode d’authentification, ici mode d’authenfication HTTP standard,
  • Require valid-user : indique que n’importe quel utilisateur fera l’affaire (idem pour la gestion des groupes),
  • Require user toto : indique que seul l’utilisateur « toto » pourra se connecter (idem pour la gestion des groupes).

Dernier point, le fichier contenant de mots de passe : il est d’usage de créer un fichier caché (nom précédé d’un point en syntaxe linux), par exemple .monfichierdemotdepasse, avec les mots de passes cryptés.

Apache fournit un outil permettant de générer facilement des mots de passe cryptés : il s’agit de l’utilitaire htpasswd. Pour créer un nouveau fichier de mots de passe, on utilise la commande htpasswd en passant le paramètre « -c«  pour la création :

htpasswd -c /path/to/password/password.file votreutilisateur

Pour ajouter de nouveaux identifiants à un fichier existant :

htpasswd /path/to/password/password.file votreutilisateur

Vous remarquerez que le mot de passe n’est pas passé dans la commande, il sera demandé en ligne de commande avec une confirmation, par exemple :

htpasswd -c /var/www/.myhtpasswdfile romain

Voilà, j’espère que ça servira à quelques personnes ! ;)

Documentation officielle pour Apache 2.2 : Apache tutorial for .htaccess files.