OAuth 2.0 bietet mehrere Autorisierungsmodi, unter denen der Authorization Code Grant der am häufigsten genutzte und sicherste ist. code_challenge ist eine sicherheitsverstärkte Funktion in diesem Modus, hauptsächlich für den PKCE-Mechanismus (Proof Key for Code Exchange).
Was ist PKCE?
PKCE (Proof Key for Code Exchange) ist eine Erweiterung, die entwickelt wurde, um die Sicherheit des OAuth 2.0-Autorisierungscodemusters zu erhöhen, insbesondere wenn sie in öffentlichen Clients wie JavaScript-Anwendungen oder mobilen Apps in Browsern verwendet wird. PKCE verhindert, dass Autorisierungscodes abgefangen und missbraucht werden, indem ein zusätzlicher Authentifizierungsschritt zu Autorisierungsanfragen hinzugefügt wird.
code_challenge Rolle
code_challenge ist Teil des PKCE-Mechanismus, der während der Autorisierungsanforderungsphase generiert und gesendet wird. Er basiert auf einem geheimen Wert (genannt code_verifier), der durch einen Hashing-Algorithmus wie S256 transformiert wird. Zweck von code_challenge ist es, eine Validierungsbasis für nachfolgende Token-Anfragen bereitzustellen, ohne die code_verifier direkt offenzulegen.
Erzeugung und Nutzung von code_challenge und code_verifier
Generation code_verifier: code_verifier ist eine zufällig generierte Zeichenkette mit hoher Entropie,Zeichenlänge (zwischen 43 und 128). Der Standardwert liegt bei 43。
Generation code_challenge: Mit code_verifier wird code_challenge durch einen Hashing-Algorithmus (wie S256) generiert. Für S256 ist code_challenge die Base64-URL-Codierung des code_verifier SHA-256-Hashwerts, aber das =-Füllzeichen aus der Codierung muss entfernt werden, und die Ausgabelänge muss 43 Zeichen betragen (da nach der Base64-URL-Codierung alle 4 Zeichen 3 Bytes darstellen, aber der letzte Zeichenblock weniger als 4 Zeichen sein kann, sodass die Länge nach dem Entfernen von = Zeichen leicht variieren kann).
Verwenden Sie code_challenge bei Autorisierungsanfragen: Beim Initiieren einer Autorisierungsanfrage wird code_challenge als einer der Anfrageparameter an den Autorisierungsserver gesendet.
Verwendung code_verifier in Token-Anfragen: Wenn der Autorisierungsserver den Autorisierungscode zurückgibt, verwendet der Client diesen Code zusammen mit dem zuvor generierten code_verifier, um Zugriff auf den Token-Endpunkt anzufordern. Der Autorisierungsserver überprüft, ob code_challenge und code_verifier übereinstimmen, und stellt sicher, dass die Anfrage vom ursprünglichen Client initiiert wird.
PKCE-Generierung
Online-PKCE-Generierungstools:Der Hyperlink-Login ist sichtbar.
Der C#-Code wird wie folgt generiert:
Wie unten gezeigt:
Referenz:
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar. |