Welchen Vorteil bietet der OAuth2 PKCE-Flow gegenüber dem impliziten Flow für Single-Page-Applications?

Der entscheidende Vorteil des PKCE-Flows (Proof Key for Code Exchange) gegenüber dem impliziten Flow liegt in der Eliminierung der Token-Exposition im Browser-Verlauf und in den URL-Parametern. Beim impliziten Flow wird das Access Token direkt als Fragment in der Redirect-URL an die Single-Page-Application (SPA) zurückgegeben. Dies macht das Token für jede Komponente sichtbar, die Zugriff auf den Browser-Verlauf, die Referer-Header oder durch Cross-Site Scripting (XSS) auf die URL hat.

PKCE transformiert diesen Prozess, indem es den Authorization Code Flow für Public Clients absichert. Anstatt das Token direkt zu übertragen, wird ein temporärer Authorization Code verwendet. Um zu verhindern, dass dieser Code von einem Angreifer abgefangen und missbraucht wird, implementiert PKCE einen kryptografischen Bindungsmechanismus:

  1. Die SPA generiert einen zufälligen code_verifier und berechnet daraus einen code_challenge.
  2. Der Challenge wird beim initialen Request an den Authorization Server gesendet.
  3. Nach dem Login erhält die SPA den Authorization Code.
  4. Um das eigentliche Access Token zu erhalten, sendet die SPA den ursprünglichen code_verifier in einem POST-Request (Back-Channel) an den Server.

Der Server validiert, ob der Verifier zum zuvor gespeicherten Challenge passt. Nur bei Erfolg wird das Token ausgegeben.

MerkmalImpliziter FlowPKCE-Flow
Token-ÜbertragungFront-Channel (URL-Fragment)Back-Channel (POST-Request)
SicherheitsrisikoHoch (Token-Leakage via URL)Gering (Code-Interzeption wird verhindert)
ValidierungKeine clientseitige PrüfungKryptografischer Proof (code_verifier)
IETF-StatusVeraltet (Deprecated)Aktueller Standard für SPAs

Die Implementierung solcher Sicherheitsarchitekturen ist ein Kernbestandteil unserer IT-Consulting & Digitale Strategie, um die Integrität von Nutzerdaten in modernen Web-Umgebungen zu gewährleisten.

Da der implizite Flow nach aktuellen IETF-Richtlinien als unsicher eingestuft wird, ist die Migration auf PKCE für jede professionelle Web-Applikation notwendig. Wir empfehlen den vollständigen Verzicht auf den impliziten Flow, da die Risiken durch Token-Interzeption in Browser-Umgebungen ohne den Schutz eines Back-Channel-Austauschs nicht mehr vertretbar sind.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt