Authorization
Baseline
Widely available
*
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'en-tête de requête HTTP Authorization permet de fournir des informations d'identification afin d'authentifier un agent utilisateur auprès d'un serveur, donnant ainsi accès à des ressources protégées.
L'en-tête Authorization est généralement, mais pas toujours, envoyé après qu'un agent utilisateur a tenté d'accéder à une ressource protégée sans fournir d'identifiants.
Le serveur répond alors par un message 401 Unauthorized contenant au moins un en-tête WWW-Authenticate.
Cet en-tête indique les schémas d'authentification utilisables pour accéder à la ressource ainsi que toute information supplémentaire nécessaire au client pour les utiliser.
L'agent utilisateur doit choisir le schéma d'authentification le plus sécurisé qu'il prend en charge parmi ceux proposés, demander les identifiants à l'utilisateur·ice, puis refaire la requête avec les identifiants encodés dans l'en-tête Authorization.
Cet en-tête est supprimé lors des redirections inter-origines.
Note : Cet en-tête fait partie du cadre général d'authentification HTTP. Il peut être utilisé avec différents schémas d'authentification.
| Type d'en-tête | En-tête de requête |
|---|---|
| Nom d'en-tête interdit | Non |
Syntaxe
Authorization: <auth-scheme> <authorization-parameters>
// Authentication avec Basic
Authorization: Basic <credentials>
// Authentication avec Digest
Authorization: Digest username=<username>,
realm="<realm>",
uri="<url>",
algorithm=<algorithm>,
nonce="<nonce>",
nc=<nc>,
cnonce="<cnonce>",
qop=<qop>,
response="<response>",
opaque="<opaque>"
Directives
<auth-scheme>-
Le schéma d'authentification qui définit la façon dont les identifiants sont encodés. Les types les plus courants (insensibles à la casse) sont :
Basic,Digest,NegotiateetAWS4-HMAC-SHA256.Note : Pour plus d'informations ou d'options, voir Authentification HTTP : schémas d'authentification
À l'exception de <auth-scheme>, les autres directives sont propres à chaque schéma d'authentification.
En général, il faudra consulter la spécification correspondante (certaines clés pour un sous-ensemble de schémas sont listées ci-dessous).
Authentification avec Basic
<credentials>-
Les identifiants, encodés selon le schéma défini.
Note : Pour plus d'informations sur l'algorithme d'encodage, voir les exemples ci-dessous, dans
WWW-Authenticate, dans Authentification HTTP et dans la spécification correspondante.
Authentification avec Digest
<response>-
Une chaîne de chiffres hexadécimaux qui prouve que l'utilisateur·ice connaît le mot de passe. L'algorithme encode le nom d'utilisateur·ice, le mot de passe, le realm, le cnonce, le qop, le nc, etc. Voir la spécification pour plus de détails.
username-
Une chaîne de caractères entre guillemets contenant le nom de l'utilisateur·ice pour le
realmdéfini, en texte brut ou sous forme de hachage hexadécimal. Si le nom contient des caractères non autorisés dans le champ, on peut utiliserusername*à la place (et non en plus). username*-
Le nom de l'utilisateur·ice formaté selon la notation étendue définie dans la RFC5987. À utiliser uniquement si le nom ne peut pas être encodé dans
usernameet siuserhashvaut"false". uri-
L'URI de requête effective. Voir la spécification pour plus d'informations.
realm-
Domaine du nom d'utilisateur·ice/mot de passe demandé (doit correspondre à la valeur dans la réponse
WWW-Authenticatepour la ressource demandée). opaque-
La valeur dans la réponse
WWW-Authenticatepour la ressource demandée. algorithm-
L'algorithme utilisé pour calculer le digest. Doit être un algorithme supporté indiqué dans la réponse
WWW-Authenticatepour la ressource demandée. qop-
Un jeton indiquant le niveau de protection appliqué au message. Doit correspondre à l'une des valeurs indiquées dans la réponse
WWW-Authenticatepour la ressource demandée."auth": Authentification"auth-int": Authentification avec protection d'intégrité
cnonce-
Une chaîne de caractères (ASCII uniquement) fournie par le client. Utilisée par le client et le serveur pour fournir une authentification mutuelle, garantir l'intégrité de certains messages et éviter les attaques par texte choisi. Voir la spécification pour plus d'informations.
nc-
Compteur de nonce. Nombre hexadécimal de requêtes dans lesquelles le client a envoyé la valeur
cnoncecourante (y compris la requête actuelle). Le serveur peut utiliser des valeursncdupliquées pour détecter les tentatives de rejeu. userhashFacultatif-
"true"si le nom d'utilisateur·ice a été haché."false"par défaut.
Exemples
Authentification simple avec Basic
Pour l'authentification Basic, les identifiants sont construits en combinant d'abord le nom d'utilisateur·ice et le mot de passe avec un deux-points (par exemple, aladdin:opensesame), puis en encodant la chaîne de caractères résultante en base64 (par exemple, YWxhZGRpbjpvcGVuc2VzYW1l).
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
Attention :
Un encodage Base64 peut facilement être inversé pour obtenir le nom et le mot de passe d'origine, donc l'authentification Basic n'offre aucune sécurité cryptographique.
HTTPS est toujours recommandé lors de l'utilisation d'une authentification, mais c'est encore plus important avec l'authentification Basic.
Voir aussi l'article authentification HTTP pour des exemples de configuration de serveurs Apache ou Nginx afin de protéger votre site par mot de passe avec l'authentification HTTP basique.
Spécifications
| Specification |
|---|
| HTTP Semantics # field.authorization |
Compatibilité des navigateurs
Voir
- L'authentification HTTP
- L'en-tête HTTP
WWW-Authenticate - L'en-tête HTTP
Proxy-Authorization - L'en-tête HTTP
Proxy-Authenticate - Les status HTTP
401,403,407