Tous les articles

Basic Authentication : comment fonctionne le moyen le plus simple de protéger une ressource HTTP

L'authentification HTTP Basic est l'une des méthodes les plus anciennes et les plus simples pour protéger une ressource par mot de passe : le navigateur demande un identifiant et un mot de passe, qui sont ensuite envoyés au serveur à chaque requête. Cette simplicité est aussi sa principale faiblesse.

Comment se construit l'en-tête Authorization

L'identifiant et le mot de passe sont joints par deux-points (identifiant:motdepasse), puis la chaîne entière est encodée en Base64 et placée dans l'en-tête Authorization: Basic <chaîne_encodée>. Le navigateur renvoie automatiquement cet en-tête à chaque requête suivante après la première authentification réussie.

Pourquoi Base64 n'est pas de la sécurité

Base64 est un schéma d'encodage, pas un chiffrement : n'importe qui peut décoder la chaîne pour retrouver identifiant:motdepasse en quelques secondes, sans aucune clé. Si la requête est interceptée — sur un Wi-Fi public non sécurisé, par exemple — les identifiants sont exposés instantanément.

Accents français et taille du Base64

Base64 encode des octets, pas des caractères, donc l'encodage de la chaîne d'origine compte. Une lettre non accentuée occupe 1 octet en UTF-8, mais des caractères comme é, è, ç ou œ, très fréquents en français, en occupent 2. Un mot de passe comme Château_Élysée123 produit donc un jeton Base64 nettement plus long qu'un mot de passe purement ASCII de même longueur visuelle. Avant la RFC 7617 (2015), la spécification originale de Basic Auth ne définissait même pas d'encodage de caractères pour l'identifiant et le mot de passe, ce qui posait de réels problèmes d'interopérabilité dès que des caractères accentués entraient en jeu.

À quoi ça sert

  • Protéger rapidement un serveur de staging ou un outil interne par mot de passe pendant le développement.
  • Construire un en-tête Authorization correct pour tester manuellement une API avec curl ou Postman.
  • Comprendre pourquoi utiliser Basic Auth en HTTP simple est considéré comme une faille de sécurité sérieuse.

Basic Auth n'a pas de déconnexion native

Le navigateur met les identifiants en cache et rajoute automatiquement l'en-tête Authorization à chaque requête suivante vers la même origine, jusqu'à la fermeture de l'onglet — le protocole ne prévoit tout simplement pas de bouton "déconnexion" standard. Pour forcer une déconnexion, les serveurs recourent à des astuces : renvoyer volontairement un 401 avec une valeur de realm différente, ou compter sur le fait que l'utilisateur ferme lui-même tous les onglets du navigateur.

Essayer l'outil