L'objet de ce tutoriel est d'apprendre à protéger
par mot de passe, sous serveur Apache, certains répertoires
ou fichiers contenant des données à accès restreint.
L'approche choisie privilégie l'utilisation des fichiers
.htaccess et .htpasswd,
mais une protection de même nature peut être obtenue
à l'aide d'un script en Perl, Javascript ou PHP.
Le fichier .htaccess se place dans
le répertoire contenant les documents à protéger
(il peut y avoir autant de fichiers .htaccess
que de répertoires), et précise notamment le chemin
du fichier .htpasswd contenant le ou
les mots de passe. La protection s'applique à la totalité
du répertoire et récursivement aux sous-répertoires.
Notons que toutes les modifications que l'on apporte au fichier
.htaccess peuvent être réalisées
également par l'intermédiaire des fichiers httpd.conf
et access.conf (dans ces deux derniers
cas, on spécifie répertoires et fichiers à
protéger).
Le fichier .htaccess
Un fichier .htaccess typique ressemblera à ceci (on suppose
un serveur sous Unix):
AuthUserFile /home/web/.htpasswd
AuthName Restricted Area
AuthType Basic
<limit GET POST>
require valid-user
</limit>
La mention "Restricted Area" apparaîtra sur la boîte
de dialogue invitant à saisir identifiant et mot de passe.
Seuls les utilisateurs dont l'identification a réussi pourront
accéder (par une requête de type GET ou POST) à
un document protégé.
Le fichier .htpasswd correspondant
contient les identifiants et le mot de passe. Pour créer
ce fichier, on utilise la commande htpasswd.
On écrira (ici depuis
le répertoire /home/web/, sur
le serveur donc, ce qui implique au moins un accès Telnet)
en tant que root:
htpasswd -c .htpasswd username
puis on entrera le mot de passe à l'invite correspondante
(il sera demandé deux fois). Ajouter un utilisateur une fois
que le fichier est créé se fera par:
htpasswd .htpasswd username
Le fichier .htpasswd contiendra
des lignes du type:
username:motdepassecrypté
qu'il suffira d'effacer pour supprimer un utilisateur.
Il est préférable que le fichier .htpasswd
soit dans le dossier parent de la racine du site concerné
(afin que les identifiants - username - ne soient pas visibles
depuis le web).
Le fichier httpd.conf
Si l'on préfére modifier ce fichier au lieu
des .htaccess des répertoires à protéger, on
ajoutera par exemple les lignes suivantes:
<directory /home/web/htdocs/restricted>
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/web/.htpasswd
require valid-user
</directory>
et ainsi de suite pour différents répertoires le cas
échéant. Notons qu'après toute modification
de httpd.conf, Apache doit être
relancé pour que celle-ci soit prise en compte.
Pour finir, deux remarques: le fichier contenant identifiants et
mots de passe peut prendre n'importe quel nom: on aurait pu tout
aussi bien l'appeler .motdepasse au
lieu de .htpasswd; de plus, ne pas
oublier sous Unix de placer les droits d'accès de ce fichier
de manière appropriée (lecture seule).
|