Authentification d'accès de base - Basic access authentication

Dans le contexte d'une transaction HTTP , l'authentification d'accès de base est une méthode permettant à un agent utilisateur HTTP (par exemple un navigateur Web ) de fournir un nom d'utilisateur et un mot de passe lors d'une demande. Dans l'authentification HTTP de base, une requête contient un champ d'en-tête sous la forme de Authorization: Basic <credentials>, où les informations d'identification sont l' encodage Base64 de l'ID et du mot de passe joint par un seul deux-points :.

Il est spécifié dans la RFC  7617 de 2015, qui rend obsolète la RFC  2617 de 1999.

Caractéristiques

L'implémentation de l'authentification de base HTTP (BA) est la technique la plus simple pour appliquer des contrôles d'accès aux ressources Web car elle ne nécessite pas de cookies , d'identifiants de session ou de pages de connexion ; à la place, l'authentification HTTP Basic utilise des champs standard dans l' en-tête HTTP .

Sécurité

Le mécanisme BA n'assure pas la protection de la confidentialité des justificatifs d'identité transmis. Ils sont simplement encodés en Base64 en transit et non chiffrés ou hachés de quelque manière que ce soit. Par conséquent, l'authentification de base est généralement utilisée conjointement avec HTTPS pour assurer la confidentialité.

Étant donné que le champ BA doit être envoyé dans l'en-tête de chaque requête HTTP, le navigateur Web doit mettre en cache les informations d'identification pendant une période raisonnable pour éviter de demander constamment à l'utilisateur son nom d'utilisateur et son mot de passe. La politique de mise en cache diffère d'un navigateur à l'autre.

HTTP ne fournit pas de méthode pour qu'un serveur Web demande au client de "déconnecter" l'utilisateur. Cependant, il existe un certain nombre de méthodes pour effacer les informations d'identification mises en cache dans certains navigateurs Web. L'un d'eux redirige l'utilisateur vers une URL sur le même domaine, en utilisant des informations d'identification intentionnellement incorrectes. Cependant, ce comportement est incohérent entre les différents navigateurs et versions de navigateur. Microsoft Internet Explorer propose une méthode JavaScript dédiée pour effacer les informations d'identification mises en cache :

<script>document.execCommand('ClearAuthenticationCache');</script>

Dans les navigateurs modernes, les informations d'identification mises en cache pour l'authentification de base sont généralement effacées lors de l'effacement de l'historique de navigation. La plupart des navigateurs permettent aux utilisateurs d'effacer spécifiquement uniquement les informations d'identification, bien que l'option puisse être difficile à trouver, et efface généralement les informations d'identification pour tous les sites visités.

Protocole

Du côté serveur

Lorsque le serveur souhaite que l'agent utilisateur s'authentifie auprès du serveur après avoir reçu une requête non authentifiée, il doit envoyer une réponse avec une ligne d'état HTTP 401 Unauthorized et un champ d'en - tête WWW-Authenticate .

Le champ d'en - tête WWW-Authenticate pour l'authentification de base est construit comme suit :

WWW-Authenticate: Basic realm="User Visible Realm"

Le serveur peut choisir d'inclure le paramètre charset de la RFC  7617 :

WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"

Ce paramètre indique que le serveur s'attend à ce que le client utilise UTF-8 pour encoder le nom d'utilisateur et le mot de passe (voir ci-dessous).

Côté client

Lorsque l'agent utilisateur souhaite envoyer des informations d'authentification au serveur, il peut utiliser le champ d'en-tête Authorization .

Le champ d'en-tête d' autorisation est construit comme suit :

  1. Le nom d'utilisateur et le mot de passe sont combinés avec un seul deux-points (:). Cela signifie que le nom d'utilisateur lui-même ne peut pas contenir de deux-points.
  2. La chaîne résultante est codée dans une séquence d'octets. Le jeu de caractères à utiliser pour cet encodage est par défaut non spécifié, tant qu'il est compatible avec US-ASCII, mais le serveur peut suggérer l'utilisation d'UTF-8 en envoyant le paramètre charset .
  3. La chaîne résultante est encodée à l'aide d'une variante de Base64 (+/ et avec remplissage).
  4. La méthode d'autorisation et un espace (par exemple "Basic") sont ensuite ajoutés au début de la chaîne encodée.

Par exemple, si le navigateur utilise Aladdin comme nom d'utilisateur et open sesame comme mot de passe, la valeur du champ est l'encodage Base64 de Aladdin:open sesame , ou QWxhZGRpbjpvcGVuIHNlc2FtZQ== . Ensuite, le champ d'en-tête d' autorisation apparaîtra comme :

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Voir également

Références et notes

Liens externes