RFC 2617 - Authentification HTTP : Authentification d'accès de base et par condensé
Date de publication : Juin 1999
Statut : Norme Internet
Auteurs : J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen, L. Stewart
Rend obsolète : RFC 2069
Rendu obsolète par : RFC 7235, RFC 7615, RFC 7616, RFC 7617
Résumé (Abstract)
« HTTP/1.0 » comprend la spécification d'un schéma d'authentification d'accès de base (Basic Access Authentication Scheme). Ce schéma n'est pas considéré comme une méthode sécurisée d'authentification des utilisateurs (sauf s'il est utilisé conjointement avec un système sécurisé externe tel que SSL), car le nom d'utilisateur et le mot de passe sont transmis sur le réseau en texte clair.
Ce document fournit également la spécification du cadre d'authentification (Authentication Framework) HTTP, du schéma d'authentification de base original et d'un schéma basé sur des hachages cryptographiques, appelé « Authentification d'accès par condensé » (Digest Access Authentication). Il est donc également destiné à servir de remplacement pour le RFC 2069. Certains éléments optionnels spécifiés par le RFC 2069 ont été supprimés de cette spécification en raison de problèmes découverts depuis sa publication ; d'autres nouveaux éléments ont été ajoutés pour la compatibilité, ces nouveaux éléments ont été rendus optionnels, mais sont fortement recommandés.
Comme l'authentification de base (Basic), l'authentification d'accès par condensé (Digest Access Authentication) vérifie que les deux parties à une communication connaissent un secret partagé (un mot de passe) ; contrairement à l'authentification de base, cette vérification peut être effectuée sans envoyer le mot de passe en clair, ce qui constitue la plus grande faiblesse de l'authentification de base. Comme pour la plupart des autres protocoles d'authentification, les principales sources de risques se trouvent généralement non pas dans le protocole de base lui-même, mais dans les politiques et procédures entourant son utilisation.
Statut de ce mémo (Status of this Memo)
Ce document spécifie un protocole de norme Internet pour la communauté Internet et demande des discussions et des suggestions pour son amélioration. Veuillez vous référer à l'édition actuelle des « Normes officielles des protocoles Internet » (STD 1) pour connaître l'état de normalisation et le statut de ce protocole. La distribution de ce mémo est illimitée.
Table des matières (Table of Contents)
- 1. Authentification d'accès (Access Authentication)
- 1.1 Dépendance à la spécification HTTP/1.1
- 1.2 Cadre d'authentification d'accès
- 2. Schéma d'authentification de base (Basic Authentication Scheme)
- 3. Schéma d'authentification d'accès par condensé (Digest Access Authentication Scheme)
- 3.1 Introduction
- 3.1.1 Objectif
- 3.1.2 Fonctionnement général
- 3.1.3 Représentation des valeurs de condensé
- 3.1.4 Limitations
- 3.2 Spécification des en-têtes de condensé
- 3.2.1 L'en-tête de réponse WWW-Authenticate
- 3.2.2 L'en-tête de requête Authorization
- 3.2.3 L'en-tête Authentication-Info
- 3.3 Fonctionnement du condensé
- 3.4 Négociation du protocole de sécurité
- 3.5 Exemple
- 3.6 Proxy-Authentication et Proxy-Authorization
- 3.1 Introduction
- 4. Considérations de sécurité (Security Considerations)
- 4.1 Authentification des clients utilisant l'authentification de base
- 4.2 Authentification des clients utilisant l'authentification par condensé
- 4.3 Valeurs nonce à usage limité
- 4.4 Comparaison de l'authentification par condensé avec l'authentification de base
- 4.5 Attaques par rejeu
- 4.6 Faiblesse créée par plusieurs schémas d'authentification
- 4.7 Attaques par dictionnaire en ligne
- 4.8 Homme du milieu
- 4.9 Attaques par texte clair choisi
- 4.10 Attaques par dictionnaire précalculé
- 4.11 Attaques par force brute par lot
- 4.12 Usurpation par des serveurs contrefaits
- 4.13 Stockage des mots de passe
- 4.14 Résumé
- 5. Exemple d'implémentation (Sample implementation)
- 6. Remerciements (Acknowledgments)
- 7. Références (References)
- 8. Adresses des auteurs (Authors' Addresses)
Concepts fondamentaux
Deux schémas d'authentification
1. Authentification de base (Basic Authentication)
- Principe : Nom d'utilisateur et mot de passe envoyés encodés en Base64
- Format :
Authorization: Basic base64(username:password) - Sécurité : ⚠️ Transmission en texte clair, non sécurisé (sauf utilisation de HTTPS)
- Cas d'usage : Applications simples, systèmes internes, combiné avec HTTPS
2. Authentification par condensé (Digest Authentication)
- Principe : Utilise le hachage MD5, le mot de passe n'est pas transmis en clair
- Format : Inclut nonce, realm, qop et d'autres paramètres
- Sécurité : ✅ Plus sûr que l'authentification de base, mais HTTPS toujours recommandé
- Cas d'usage : Authentification HTTP nécessitant une sécurité accrue
Flux d'authentification
Client Serveur
| |
|------- 1. Requête ressource -------->|
| protégée |
| |
|<------ 2. 401 + WWW-Authenticate ----|
| (défi) |
| |
|------- 3. En-tête Authorization ---->|
| (identifiants) |
| |
|<------ 4. 200 OK + ressource --------|
| |
Codes d'état HTTP
- 401 Unauthorized : Authentification requise
- 407 Proxy Authentication Required : Authentification proxy requise
En-têtes HTTP clés
WWW-Authenticate: Défi envoyé par le serveurAuthorization: Identifiants envoyés par le clientAuthentication-Info: Informations d'authentification optionnellesProxy-Authenticate: Défi du serveur proxyProxy-Authorization: Identifiants envoyés au proxy
Exemples
Exemple d'authentification de base
Réponse du serveur :
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"
Requête du client :
GET /private/index.html HTTP/1.1
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Exemple d'authentification par condensé
Réponse du serveur :
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="[email protected]",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
Requête du client :
GET /dir/index.html HTTP/1.1
Authorization: Digest username="Mufasa",
realm="[email protected]",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
uri="/dir/index.html",
qop=auth,
nc=00000001,
cnonce="0a4f113b",
response="6629fae49393a05397450978507c4ef1",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
Ressources associées
- Texte officiel : RFC 2617 (TXT)
- Page officielle : RFC 2617 DataTracker
- Rend obsolète : RFC 2069
- Rendu obsolète par :
- RFC 7235 (HTTP/1.1 Authentication)
- RFC 7615 (HTTP Authentication-Info)
- RFC 7616 (HTTP Digest Access Authentication)
- RFC 7617 (HTTP Basic Authentication)
Avertissement de sécurité ⚠️
- L'authentification de base n'est pas sécurisée : doit être utilisée avec HTTPS
- L'authentification par condensé a des limitations : bien que meilleure que l'authentification de base, HTTPS reste recommandé
- Alternatives modernes : considérer l'utilisation d'OAuth 2.0, JWT ou d'autres mécanismes d'authentification modernes
- Stockage des mots de passe : les serveurs devraient stocker les mots de passe en utilisant des hachages salés
Avis important : Le RFC 2617 a été rendu obsolète par les RFC 7235, 7616, 7617 et d'autres. Les applications modernes devraient se référer à ces normes mises à jour, ou utiliser des frameworks d'authentification modernes tels qu'OAuth 2.0.