L'authentification HTTP de base utilise des noms d'utilisateur et des mots de passe pour sécuriser certains itinéraires de votre site Web. Il est couramment utilisé pour verrouiller les panneaux d'administration et les services backend et, en conjonction avec HTTPS, offre une bonne sécurité pour les ressources Web.
Comment fonctionne l'authentification HTTP?
L'authentification HTTP de base protège certaines ressources ou routes avec un nom d'utilisateur et un mot de passe. Lorsqu'un utilisateur tente d'accéder à cette ressource, son navigateur affiche une boîte de dialogue demandant des informations d'identification avant d'envoyer quoi que ce soit. Les panneaux d'administration de la plupart des routeurs domestiques sont sécurisés de cette manière.
Dans les coulisses, lorsqu'un utilisateur tente d'accéder à une ressource protégée, le serveur envoie à l'utilisateur un WWW-Authenticate
en-tête avec un 401 Réponse non autorisée
. Le client renvoie le nom d'utilisateur et le mot de passe appropriés, stockés dans le Autorisation
entête. Le serveur vérifie la combinaison par rapport à une liste de mots de passe hachés et le client est autorisé à se connecter si elle correspond.
L'authentification HTTP de base nécessite l'envoi de mots de passe en texte brut, vous devez avoir configuré HTTPS / TLS sur votre serveur, sinon vous serez vulnérable aux attaques de type "man-in-the-middle". HTTPS va crypter la connexion et verrouiller toute personne tentant de renifler votre mot de passe. Vous pouvez configurer un certificat gratuit avec LetsEncrypt, ou si vous cherchez à sécuriser un serveur privé, créez-en un et signez-le vous-même.
Générer un fichier de mot de passe
Pour que l'authentification HTTP de base fonctionne, vous aurez besoin d'un fichier servant de base de données de noms d'utilisateur et de leurs mots de passe correspondants. Vous pouvez créer ceci avec le htpasswd
utilitaire, qui doit être installé avec votre installation Apache via le apache2-utils
bibliothèque. S'il n'est pas installé, vous pouvez l'installer à partir du gestionnaire de packages de votre distribution; pour les systèmes basés sur Debian comme Ubuntu, ce serait:
sudo apt-get install apache2-utils
Ensuite, vous pouvez générer le fichier de mot de passe avec le -c
drapeau. Cette commande crée un nouveau fichier de mots de passe et définit le mot de passe de l'utilisateur «admin»:
sudo htpasswd -c /etc/apache2/.htpasswd admin
Vous serez invité à entrer un mot de passe, qui sera haché et stocké dans /etc/apache2/.htpasswd
. Si vous souhaitez ajouter un autre utilisateur, omettez le -c
drapeau pour ajouter une entrée.
Vous pouvez également modifier Apache AuthBasicProvider
option pour permettre différentes méthodes de vérification des mots de passe, comme à partir de bases de données. Cependant, l'option par défaut d'utiliser htpasswd
les fichiers fonctionnent bien dans la plupart des cas, en particulier avec seulement quelques utilisateurs.
Configuration d'Apache
Il existe plusieurs façons de configurer l'authentification par mot de passe dans Apache. Vous ajouterez toujours les mêmes options de configuration, mais Apache stocke les fichiers de configuration dans de nombreux endroits et celui que vous devrez modifier dépendra de votre configuration.
Si vous souhaitez activer l'authentification pour tout, vous souhaiterez modifier le fichier de configuration principal:
/etc/apache2/apache2.conf
Si vous souhaitez à la place authentifier un dossier spécifique, vous souhaiterez modifier le fichier de configuration de ce dossier dans compatible avec les sites
. Par exemple, la configuration par défaut est à:
/etc/apache2/sites-available/000-default.conf
mais le vôtre sera probablement nommé en fonction de l'itinéraire. Si vous devez en créer une nouvelle, vous pouvez copier cette configuration par défaut et modifier le DocumentRoot
.
Si vous avez géré l'hébergement et que vous n'avez pas accès aux principaux fichiers de configuration, vous allez probablement modifier un .htaccess
fichier, généralement situé à la racine du dossier de votre site. Par exemple:
/var/www/html/.htaccess
Dans tous les cas, vous souhaiterez ouvrir le fichier correspondant à votre cas d'utilisation et ajouter ce qui suit à l'intérieur d'un bloc de répertoire. Si vous modifiez un .htaccess
fichier, le
bloc n'est pas nécessaire, juste les lignes à l'intérieur:
AuthType Basic AuthName "Contenu restreint" AuthUserFile /etc/apache2/.htpasswd Exiger un utilisateur valide
Les paramètres d’authentification s’appliqueront à l’ensemble du répertoire, que vous souhaitez généralement définir sur la racine entière du document, bien que vous puissiez l’appliquer uniquement à un dossier spécifique en modifiant le chemin:
Cela définira le type d'authentification et dirigera Apache vers le fichier de mot de passe. Il n’est pas nécessaire de lui donner un nom spécifique, vous pouvez donc générer différents fichiers de mots de passe pour différents répertoires.
Redémarrez Apache pour appliquer les modifications:
redémarrage du service sudo apache2
Vérifiez l'itinéraire protégé dans votre navigateur et vous devriez être arrêté et demandé un mot de passe. Si vous ne pouvez pas le fournir, vous recevrez un 401 non autorisé
erreur et accès refusé.
Gardez à l'esprit que les mots de passe sont toujours transmis en texte brut. Vous souhaiterez donc activer HTTPS pour Apache.