Créer un accès protégé à un dossier via htaccess

ordinateur verrouillé
Article rédigé le : 05/05/2020


Publique visé : Développeur web
Notions requises : Tout niveau, débutant compris
Temps de lecture : 10 minutes
Auteur : Adrien Taïnoff

C'est souvent pénible à faire un fichier htaccess.
Les documentations sont rarement claires et semblent s’adresser à des admin réseaux.
Il y a un tutoriel Apache pour créer ce .htaccess , et heureusement il y a aussi un super tutoriel sur OpenClassRoom.

Je vais faire globalement la même chose.
On va voir comment protéger un dossier dans un site web, un dossier nommé "admin".

Serveur, Configuration Apache

Un petit mot pour comprendre ce qu'on veut faire.
Apache c'est le serveur, il défini des directives dans sa configuration (quelques part dans un /etc/apche2/apache.conf pour certains linux).
Le fichier .htaccess est un fichier de configuration qui veut surcharger les directives d'apache.
Pour que la surcharge fonctionne, il faut que ce soit autorisé plus bas, par la configuration apache.
Il y a une hierarchie à cette surcharge. Un dossier est surchargé par ses sous-dossiers, qui sont surchargés par leur sous-dossier,...

Créez 2 fichiers

Placez vous dans le dossier que vous souhaitez protéger - dans ce tuto on l'appelera "admin" -  et créez ces 2 fichiers :

  • « .htaccces. » donne les directives
  • « .htpasswd » donne les identifiants et mots de passe

Oui, il s’agit de fichiers qui commencent par un point. C'est le nommage conventionnel pour les fichiers cachés.
Pensez donc à « afficher les dossiers cachés » sur votre explorateur de fichier, car il est considéré comme tel, caché.
Normalement depuis Filezilla vous pouvez créer le fichier sans soucis. Avec un clic droit, 'Créer un nouveau fichier'.

Côté .htaccess

Ecrivez ceci

# fichier .htaccess
    AuthUserFile "/chemin_racine_de_votre_hebergement/admin/.htpasswd"
    AuthName "Page privée, espionnage, gouvernement, ...tout ça"
    AuthType Basic
    Require valid-user

 

  • AuthUserFile défini le lieu ou se trouve votre fichier htpasswd, pour qu’il puisse trouver la liste des personnes autorisés.
    • chemin_racine_de_votre_hebergement : c’est la racine de votre site, choisissez le chemin absolu, de préférence.
  • AuthName défini le texte adressé aux gens qui tente d’accéder au dossier.
  • AuthType définit la méthode utilisée pour authentifier l'utilisateur. Ici la méthode Basic
  • Require valid-user précise qu’il faut être authentifié pour avoir l’accès

Pour connaître ce chemin absolu (par exemple, si votre dossier est sur un serveur en ligne), créez un fichier chemin.php.
Inscrivez ce code PHP :

<?php echo realpath('chemin.php'); ?>

Naviguer sur votre dossier admin/chemin.php pour copier le résultat, et supprimer ce fichier.
Si vous êtes en local, vous pouvez plus facilement connaître le chemin, par exemple en clic droit → propriétées.

Côté .htpasswd

Ecrivez simplement sous la forme identifant:mot_de_passe_crypté.

Par exemple : Johnny:BeGood


Le mot de passe doit être crypté, pour cela, vous pouvez créer un nouveau fichier moncrypt.php
Inscrivez ce code PHP :

<?php echo crypt('BeGood'); ?>

Copier le résultat et supprimez ce fichier.

Votre fichier .htpasswd devrait ressembler à ça, sans espace, une ligne par personne :

# fichier .htpasswd
    Johnny:$1$78vZK.Fv$SKaFSNHmGYEnrSI/5ZtbD1
    Fred:$1$VMbN/pet$efh58N52nJ950nitQ353j.

Ca ne marche pas ou Erreur 500

Si vous avez une erreur 500 c'est probablement une faute de frappe dans votre .htaccess.
Possible aussi que apache, le serveur, refuse qu'on lui donne des nouvelles règles dans des fichiers .htaccess.
A voir avec la configuration apache.conf, ou à voir avec votre hébergeur.
 

Sources