So funktioniert es
- Auf Erzeugen klicken oder einen code_verifier einfügen.
- Die code_challenge wird als BASE64URL(SHA-256(code_verifier)) berechnet.
- code_challenge und code_challenge_method=S256 in der Autorisierungsanfrage senden.
- Den code_verifier in der Token-Anfrage senden.
PKCE (Proof Key for Code Exchange, RFC 7636) schützt den Authorization-Code-Flow von OAuth 2.0. Es wurde für öffentliche Clients entwickelt, etwa Mobil-Apps, Desktop-Apps und Single-Page-Apps, die kein Client-Secret sicher aufbewahren können. Vor der Weiterleitung erzeugt der Client ein Einmal-Geheimnis, den code_verifier, und sendet nur dessen Hash, die code_challenge. Beim Eintausch des Codes gegen Tokens schickt er den ursprünglichen Verifier mit, und der Server prüft, ob beide zusammenpassen. Wer nur den Code abfängt, kann damit nichts anfangen.
Der Generator holt 32 Zufallsbytes über crypto.getRandomValues des Browsers und kodiert sie als base64url ohne Padding – das ergibt einen Verifier mit 43 Zeichen. Die code_challenge ist der SHA-256-Wert des Verifiers, ebenfalls base64url ohne Padding, und immer 43 Zeichen lang. Angeboten wird nur S256: RFC 7636 kennt auch plain, verlangt aber S256, sobald der Client SHA-256 berechnen kann. Nützlich zum Debuggen einer Login-Integration, zum Abgleich mit der Ausgabe Ihrer Bibliothek oder zum Bauen von Testanfragen.
Ein eingefügter Verifier wird unverändert gehasht und nicht auf die RFC-Regeln geprüft. Achten Sie selbst auf 43 bis 128 Zeichen aus A–Z, a–z, 0–9, „-“, „.“, „_“ und „~“. Erzeugen Sie für jede Autorisierungsanfrage einen neuen Verifier. Beide Werte werden auf dieser Seite mit der Web Crypto API berechnet und nirgendwohin gesendet.