Der Nutzer startet den Login in der Client-Anwendung.
Jeder Flow wird als Sequenzdiagramm gezeichnet: die Akteure (Benutzer, Client, Server) sind Spalten und die Nachrichten sind Pfeile über die Zeit. Drücke Play oder ⏭, um Schritt für Schritt durchzugehen.
Ändere client_id, redirect_uri, scope, Anmeldedaten usw. und das Diagramm wird neu erzeugt. Klicke auf einen beliebigen Pfeil, um die echte HTTP-Anfrage und ihre Erklärung zu inspizieren.
Basic (Benutzer:Passwort in Base64), Bearer/JWT, Authorization Code, Code + PKCE (heute empfohlen), Implicit (veraltet), Client Credentials (Maschine-zu-Maschine), Device Code (TVs/CLI) und Refresh Token (erneuern ohne erneuten Login).
Bei jedem Schritt mit HTTP-Anfrage kannst du sie als curl-Befehl kopieren, um sie in deinem Terminal nachzustellen. Enthält der Schritt ein JWT, öffne es im JWT-Decoder, um Header und Payload zu inspizieren.
Aktiviere einen Angriff, um einen Akteur Angreifer und die bösartigen Schritte (in Rot) zu sehen. Jeder Flow bringt seine eigenen mit: Credential-Sniffing, alg:none, Abfangen des Codes ohne PKCE, PKCE mit plain, CSRF durch fehlendes state, Mix-up, gestohlenes Refresh-Token, gestohlenes DPoP-Token, Phishing des Gerätecodes, AiTM oder Token-Passthrough in MCP. Aktiviere die Abwehrmaßnahme, und der Angriff wird neutralisiert (in Grün), wobei gezeigt wird, warum er scheitert. Angriffe auf das JWT selbst (kid, jwk, typ…) findest du im Authentifizierungsfluss-Labor.
Im Tab Vergleichen wählst du auf jeder Seite einen Flow (oder ein vordefiniertes Paar) und beide werden zugleich gezeichnet. Gleichwertige Schritte richten sich in derselben Zeile aus (gleiches /authorize, gleiches /token…), damit der Unterschied ins Auge springt, und eine Zusammenfassung listet auf, welche Parameter und Akteure jeder hinzufügt. Klicke auf einen beliebigen Pfeil, um ihn zu inspizieren.
Der Tab Werkzeuge bündelt praktische OAuth-Hilfsmittel, alles im Browser: PKCE-Paare (S256) erzeugen und prüfen, eine kopierfertige /authorize-URL erstellen, eine Callback-URL analysieren (extrahiert code/state oder die Tokens aus dem Fragment und erkennt Fehler), eine /authorize-Anfrage prüfen gegen RFC 9700 und die Server-Metadaten prüfen (openid-configuration): welche Abwehrmaßnahmen er ankündigt und welche fehlen.
Der Nutzer startet den Login in der Client-Anwendung.