[g]Restriction d'accès " Création d'une table d'utilisateurs "[/g] [Page d'érreur personnalisé] [#0000ff]Etape 1 : Création d'une table d'utilisateurs[/#0000ff]
Il s'agit de stocker une liste d'utilisateurs et leur mot de passe correspondant dans un fichier. Le fichier ressemble a cela : martin:PasSw0rd
jean:SecR3t
sophie:H1dDeN " Premier champ: le nom de l'utilisateur
" Second champ: le mot de passe en clair
Notes: Vous devez transférer ce fichier en mode ASCII (voir documentation de votre client FTP) pour assurer la conversion des caractères "fin de ligne". Vous pouvez stocker ce fichier dans n'importe quel répertoire de votre site mais il faudra en spécifier le chemin dans la directive PerlSetVar AuthFile Assurez-vous de ne pas laisser d'espace ou de tabulations dans ce fichier. [#0038c6]Etape 2 : Activer la restriction d'accès [/#0038c6]
Pour limiter l'accès aux utilisateurs déclarés dans le fichier passlist, vous devez créer un fichier .htaccess dans le répertoire que vous souhaitez limiter. Remarques : Sous plate-forme Microsoft Windows, il n'est pas possible de créer directement sur votre ordinateur un fichier portant le nom ".htaccess". Vous devez le créer avec un autre nom, le transférer sur le serveur, puis le renommer.
Attention: Le nom du fichier est .htaccess et le point est le premier caractère du nom de fichier.
" ce n'est pas une extension de fichier"
Exemple : Vous créez un fichier toto.txt dans lequel vous saisissez les paramètres de votre futur fichier .htaccess Vous le copiez sur le serveur. Avec votre logiciel FTP renommez le en .htaccess PerlSetVar AuthFile secret/passlist
AuthName "Acces Restreint"
AuthType Basic
require valid-user
La commande PerlSetVar désigne le chemin d'accès à la table des utilisateurs. Il est relatif à la racine de votre site Web. Donc si vous avez stocké votre table d'utilisateurs dans le répertoire secret/password/ sous le nom 'maliste.txt', vous devez modifier la directive PerlSetVar AuthFile en conséquence : PerlSetVar AuthFile secret/password/maliste.txt La commande require valid-user autorise tous les utilisateurs valides à télécharger les fichiers du répertoire. Vous pouvez aussi utiliser require user martin sophie pour autoriser uniquement les utilisateurs martin et sophie, mais pas jean.
Attention: Il est fortement conseillé de protéger sa liste de mots de passes en la nommant autrement. Vous pouvez ainsi la stockez dans un sous-répertoire de votre site Web que vous protégerez en créant un fichier .htaccess dans ce sous répertoire, contenant uniquement la ligne : deny from all
Ceux qui veulent aller plus loin, peuvent consulter le guide utilisateur d'Apache qui traite en détail tous les aspects d'authentification.
[#0000ff]Mini Foire aux questions[/#0000ff] Lorsque j'essaie d'accèder à mon répertoire, j'ai une erreur de type 'Internal server error', qu'est-ce que ca veut dire ? Votre fichier ".htaccess" n'est pas reconnu par le serveur, il comporte probablement des erreurs. Voici les quelques points à vérifier: " La syntaxe des différentes commandes (PerlSetVar, AuthName) est-elle correcte ? Une erreur d'orthographe empêchera le serveur Web de comprendre votre fichier .htaccess " L'emplacement de la table d'utilisateurs est-il correctement spécifié ? Vous devez donner le chemin complet depuis la racine de votre site même si le fichier .htaccess se trouve dans le même répertoire. " Avez-vous effectué le transfert du fichier .htaccess en mode ASCII ? Les caractères de "fin de ligne" sont incompatibles entre les différents systèmes d'exploitation. Il suffit de retransférer le fichier en mode ASCII pour corriger ce problème. " La table d'utilisateurs existe-t-elle ? " Etes-vous sûr de votre nom de table d'utilisateurs ? Le serveur fait la différence majuscules/minuscules dans les noms de fichiers et vous devez spécifier le nom complet du fichier en précisant l'extension s'il y a lieu. Prenez garde aux caractères, espaces et tabulations qui peuvent se trouver dans votre fichier en début et fin de ligne. Lorsque je rentre l'URL de mon répertoire protégé dans mon navigateur, il me demande bien de m'authentifier mais me refuse à tout les coups, je suis pourtant sûr de mon mot de passe ? La table d'utilisateurs doit être transférée en mode ASCII sur votre site web. De plus son format est un couple 'nom:mot de passe' par ligne. Veuillez à ce qu'aucun espace ne se trouve avant le nom ou après le mot de passe. J'ai lu la documentation d'Apache et il n'est fait nulle part mention de PerlSetVar AuthFile et il y est dit qu'il faut donner les mots de passe cryptés dans la table d'utilisateurs !
Nous avons modifié Apache afin d'en permettre une utilisation simple pour tous, ce qui explique la directive PerlSetVar AuthFile. Elle est obligatoire et ne peut pas être remplacée par les équivalents d'Apache. Ca me gène de laisser les mots de passe en clair dans mon site web, est-ce qu'il y a un moyen pour les protéger ? Le moyen le plus simple est de stocker votre fichier dans un sous-répertoire qui n'est pas accessible par http. Pour ce faire, il suffit de créer un fichier .htaccess dans le sous-répertoire dont vous souhaitez interdire l'accès et d'y mettre la simple ligne : deny from all . |