htpasswd : Authentification par mot de passe

En tant qu’administrateur Web, il peut être utile de restreindre certaines parties d’un site Web aux visiteurs, que ce soit temporairement ou de façon permanente. Ce guide vous montre comment peut on protéger un site, ou bien restreindre l’accès à des ressources avec un mot de passe.

Dans cet article j’utilise le serveur Ubuntu18.04, sur lequel est installé le serveur web Apache avec un virtual Host configuré, si vous ne l’avez pas encore installé je vous invite à suivre le guide Apprendre à créer des virtual Hosts.

Création du fichier de mot de passe :

La commande htpasswd nous permet de crée un fichier de mot de passe que Apache utilisera pour authentifier les utilisateur. D’abord nous allons créer un fichier caché ( commençant par un « . ») que vous pouvez le nommer comme vous voulez, dans mon cas je l’ai nommé « .htpasswd », ce fichier doit être placé dans /etc/apache2 :

#touch /etc/apache2/.htpasswd:

La première fois que vous utilisez l’utilitaire htpasswd, vous devez ajouter l’option -c pour créer le fichier de mot de passe et nous spécifions un nom d’utilisateur (admin dans mon cas) à la fin de la commande pour créer une nouvelle entrée dans le fichier :

#htpasswd -c /etc/apache2/.htpasswd admin

Il vous sera demandé de fournir  un mot de passe pour l’utilisateur « admin ».
Une fois cela est fait, je vous invite à jeter un coup d’œil sur le fichier, vous pouvez voir qu’un entré à été ajouté de notre utilsateur avec le mot de passe crypté :

#cat  /etc/apache2/.htpasswd
admin:$ppe5$.0CAabqX$yb9lrqI\p8UzGPYtGAEAa/

L’authentification par mot de passe Apache :

Après avoir créé le fichier d’authentification avec htpasswd, vous allez modifier le fichier Virtual host de votre site auquel vous souhaitez ajouter une restriction et ajouter la section suivante :

<VirtualHost *:80>
ServerAdmin Web@localhost
DocumentRoot /var/www/monSite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/monSite>
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>

</VirtualHost>

Voyons voir ce que signifie ces directives :

-AuthType Basic :  indique une authentification par login/mot de passe
-AuthName : le titre de la fenêtre d’authentification qui sera affiché aux visiteurs
-AuthUserFile : indique le fichier d’authentification
-Require valid-user : indique que l’accès est restreinte à un utilisateur

Enregistrer le fichier t vérifier la configuration apache est bien correcte avant de le redémarrer :

#apachectl -t ( ou bien apache2ctl configtest )
#systemctl restart apache2
#systemctl status apache2

Maintenant votre site est protégé par un mot de passe.

Félicitations! vous avez maintenant configuré l’authentification de base pour votre site.