RFC 2617 - HTTP-Authentifizierung: Basis- und Digest-Zugriffs-Authentifizierung
Veröffentlichungsdatum: Juni 1999
Status: Internet-Standard
Autoren: J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen, L. Stewart
Ersetzt: RFC 2069
Ersetzt durch: RFC 7235, RFC 7615, RFC 7616, RFC 7617
Zusammenfassung (Abstract)
"HTTP/1.0" enthält die Spezifikation für ein Basis-Zugriffs-Authentifizierungsschema (Basic Access Authentication Scheme). Dieses Schema wird nicht als sichere Methode zur Benutzerauthentifizierung angesehen (es sei denn, es wird in Verbindung mit einem externen sicheren System wie SSL verwendet), da Benutzername und Passwort als Klartext über das Netzwerk übertragen werden.
Dieses Dokument bietet auch die Spezifikation für das HTTP-Authentifizierungsframework (Authentication Framework), das ursprüngliche Basis-Authentifizierungsschema und ein auf kryptographischen Hashes basierendes Schema, das als "Digest-Zugriffs-Authentifizierung" (Digest Access Authentication) bezeichnet wird. Es soll daher auch als Ersatz für RFC 2069 dienen. Einige in RFC 2069 spezifizierte optionale Elemente wurden aufgrund von Problemen, die seit seiner Veröffentlichung entdeckt wurden, aus dieser Spezifikation entfernt; andere neue Elemente wurden aus Kompatibilitätsgründen hinzugefügt, diese neuen Elemente wurden optional gemacht, werden aber dringend empfohlen.
Wie die Basis-Authentifizierung (Basic) überprüft die Digest-Zugriffs-Authentifizierung (Digest Access Authentication), dass beide Parteien einer Kommunikation ein gemeinsames Geheimnis (ein Passwort) kennen; im Gegensatz zur Basis-Authentifizierung kann diese Überprüfung durchgeführt werden, ohne das Passwort im Klartext zu senden, was die größte Schwäche der Basis-Authentifizierung ist. Wie bei den meisten anderen Authentifizierungsprotokollen liegen die größten Risikoquellen normalerweise nicht im Kernprotokoll selbst, sondern in den Richtlinien und Verfahren rund um seine Verwendung.
Status dieses Dokuments (Status of this Memo)
Dieses Dokument spezifiziert ein Internet-Standards-Track-Protokoll für die Internet-Community und bittet um Diskussion und Verbesserungsvorschläge. Bitte beziehen Sie sich auf die aktuelle Ausgabe der "Internet Official Protocol Standards" (STD 1) für den Standardisierungsstatus und Status dieses Protokolls. Die Verbreitung dieses Dokuments ist unbegrenzt.
Inhaltsverzeichnis (Table of Contents)
- 1. Zugriffs-Authentifizierung (Access Authentication)
- 1.1 Abhängigkeit von der HTTP/1.1-Spezifikation
- 1.2 Zugriffs-Authentifizierungsframework
- 2. Basis-Authentifizierungsschema (Basic Authentication Scheme)
- 3. Digest-Zugriffs-Authentifizierungsschema (Digest Access Authentication Scheme)
- 3.1 Einführung
- 3.1.1 Zweck
- 3.1.2 Gesamtbetrieb
- 3.1.3 Darstellung von Digest-Werten
- 3.1.4 Einschränkungen
- 3.2 Spezifikation der Digest-Header
- 3.2.1 Der WWW-Authenticate-Response-Header
- 3.2.2 Der Authorization-Request-Header
- 3.2.3 Der Authentication-Info-Header
- 3.3 Digest-Betrieb
- 3.4 Sicherheitsprotokoll-Verhandlung
- 3.5 Beispiel
- 3.6 Proxy-Authentication und Proxy-Authorization
- 3.1 Einführung
- 4. Sicherheitsüberlegungen (Security Considerations)
- 4.1 Authentifizierung von Clients mit Basis-Authentifizierung
- 4.2 Authentifizierung von Clients mit Digest-Authentifizierung
- 4.3 Begrenzte Verwendung von Nonce-Werten
- 4.4 Vergleich von Digest mit Basis-Authentifizierung
- 4.5 Replay-Angriffe
- 4.6 Schwäche durch mehrere Authentifizierungsschemata
- 4.7 Online-Wörterbuch-Angriffe
- 4.8 Man-in-the-Middle
- 4.9 Chosen-Plaintext-Angriffe
- 4.10 Vorberechnete Wörterbuch-Angriffe
- 4.11 Batch-Brute-Force-Angriffe
- 4.12 Spoofing durch gefälschte Server
- 4.13 Speicherung von Passwörtern
- 4.14 Zusammenfassung
- 5. Beispielimplementierung (Sample implementation)
- 6. Danksagungen (Acknowledgments)
- 7. Referenzen (References)
- 8. Adressen der Autoren (Authors' Addresses)
Kernkonzepte
Zwei Authentifizierungsschemata
1. Basis-Authentifizierung (Basic Authentication)
- Prinzip: Benutzername und Passwort Base64-codiert gesendet
- Format:
Authorization: Basic base64(username:password) - Sicherheit: ⚠️ Klartextübertragung, unsicher (außer bei Verwendung von HTTPS)
- Anwendungsfälle: Einfache Anwendungen, interne Systeme, kombiniert mit HTTPS
2. Digest-Authentifizierung (Digest Authentication)
- Prinzip: Verwendet MD5-Hash, Passwort wird nicht im Klartext übertragen
- Format: Enthält nonce, realm, qop und andere Parameter
- Sicherheit: ✅ Sicherer als Basis-Authentifizierung, aber HTTPS weiterhin empfohlen
- Anwendungsfälle: HTTP-Authentifizierung mit höheren Sicherheitsanforderungen
Authentifizierungsablauf
Client Server
| |
|------- 1. Anfrage geschützte ------->|
| Ressource |
| |
|<------ 2. 401 + WWW-Authenticate ----|
| (Challenge) |
| |
|------- 3. Authorization-Header ----->|
| (Anmeldedaten) |
| |
|<------ 4. 200 OK + Ressource --------|
| |
HTTP-Statuscodes
- 401 Unauthorized: Authentifizierung erforderlich
- 407 Proxy Authentication Required: Proxy-Authentifizierung erforderlich
Wichtige HTTP-Header
WWW-Authenticate: Vom Server gesendete ChallengeAuthorization: Vom Client gesendete AnmeldedatenAuthentication-Info: Optionale AuthentifizierungsinformationenProxy-Authenticate: Challenge vom Proxy-ServerProxy-Authorization: An Proxy gesendete Anmeldedaten
Beispiele
Basis-Authentifizierung Beispiel
Server-Antwort:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"
Client-Anfrage:
GET /private/index.html HTTP/1.1
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Digest-Authentifizierung Beispiel
Server-Antwort:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="[email protected]",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"
Client-Anfrage:
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"
Zugehörige Ressourcen
- Offizieller Text: RFC 2617 (TXT)
- Offizielle Seite: RFC 2617 DataTracker
- Ersetzt: RFC 2069
- Ersetzt durch:
- RFC 7235 (HTTP/1.1 Authentication)
- RFC 7615 (HTTP Authentication-Info)
- RFC 7616 (HTTP Digest Access Authentication)
- RFC 7617 (HTTP Basic Authentication)
Sicherheitswarnung ⚠️
- Basis-Authentifizierung ist unsicher: muss mit HTTPS verwendet werden
- Digest-Authentifizierung hat Einschränkungen: obwohl besser als Basis-Authentifizierung, wird HTTPS weiterhin empfohlen
- Moderne Alternativen: Erwägen Sie die Verwendung von OAuth 2.0, JWT oder anderen modernen Authentifizierungsmechanismen
- Passwortspeicherung: Server sollten Passwörter mit gesalzenen Hashes speichern
Wichtiger Hinweis: RFC 2617 wurde durch RFC 7235, 7616, 7617 und andere ersetzt. Moderne Anwendungen sollten sich auf diese aktualisierten Standards beziehen oder moderne Authentifizierungs-Frameworks wie OAuth 2.0 verwenden.