Comment rester plus organisé lorsque vous travaillez à domicile – LifeSavvy
18 juillet 2020
Rencontrez Celia, le remplaçant de l'assistant Google de Huawei
18 juillet 2020

Logo Apache.

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.

//]]>