Htaccess et htpasswd servent à faire une restriction d’accès par mot de passe à tel ou tel url ou répertoire de votre choix.

Vous avez surement sur vos sites certains répertoires que vous aimeriez protéger des yeux indiscrets.

La méthode est simple et s’appuie sur deux fichiers qui contiendront l'un les noms et mots de passe des personnes autorisées à accéder au contenu du répertoire et l'autre quelques directives fonctionnelles.

Petit pré requis :

Il faut que le module apache mod_authz_user soit chargé.

Vous trouverez un article sur l'administration d'apache et son installation ainsi qu'un autre article complémentaire ici

Créer un fichier .htaccess dans le répertoire que vous voulez protéger et mettez y ceci :

AuthUserFile /var/www/topsecret/.htpasswd
AuthGroupFile /dev/null
AuthName "Accès interdit aux citoyens de seconde zone..."
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

Explication de ces quelques lignes :

AuthUserFile /home/login/.htpasswd

donne le répertoire dans lequel se trouve le fichier contenant les paires login/mot de passe des visiteurs autorisés.

L’usage veut que ce fichier soit souvent nommé .htpasswd, mais ce n’est pas du tout une obligation. Il est même conseillé d’utiliser un autre nom, le fichier sera d’autant plus difficile à trouver. Ne le mettez pas dans un répertoire qui fait partie du site mais placez-le plutôt en dehors de cette arborescence si vous en avez la possibilité. Dans le système d’exploitation Unix/Linux, tous les fichiers dont le nom commence par un point sont des fichiers cachés. (ls -lah pour les voir)

AuthGroupFile /dev/null

permet de donner un droit d’accès à un ensemble d’utilisateurs faisant partie d’un même groupe et est rarement utilisée dans le cas de sites Web personnels. Dans l’exemple, le fichier /dev/null est l’équivalent Unix de nulle-part ou pas de fichier spécifique.

AuthName "Acces Restreint"

c'est le message de caractère qui apparaîtra dans la boîte de dialogue au moment de la saisie du nom et du mot de passe.

AuthType Basic

détermine le type d’authentification utilisé, dans ce cas l’authentification HTTP standard.

<limit GET POST> ... </limit>

détermine le type d’opérations permises. GET s’applique à la majorité des pages Web, PUT est utilisé par certains scripts ou éditeurs pour faire de l’upload sous protocole http. Il est important de mettre GET et POST en majuscule sur les dernières versions d’Apache.

require valid-user

signifie littéralement qu’un utilisateur valide est requis, à savoir un utilisateur pour le nom duquel une ligne existe dans le fichier .htpasswd. Une variante pourrait être :

require user Moule Oude

pour limiter l’accès aux seuls utilisateurs Moule et Oude

Le fichier .htpasswd :

C’est très simple, pour chaque utilisateur autorisé ce fichier contient une ligne sous la forme nom :mot de passe crypté exemple : Rax :TazKFoYB9rUPe »

Pour créer le fichier utilisez cette commande :

htpasswd -c passwd-file username1

Si plus tard vous désirez rajouter un utilisateur :

htpasswd passwd-file username2

Dans cette commande, passwd-file représente le chemin complet du fichier de mot de passe et username* un nom d’utilisateur de votre choix.