Wer mit wem spricht, in welcher Reihenfolge. Durchgezogene Linien sind Anfragen, gestrichelte Antworten. Zur Auswahl beginnen Sie mit Welchen Ablauf soll ich wählen?
Was ihn auszeichnet: Die Anmeldung erfolgt auf einem anderen Gerät. Das Gerät fragt den Provider bis zur Bestätigung ab.
ID-Kit kann ihn spielen: Test-Provider (Ihre Anwendung gegen ID-Kit) und Testanwendung (Ihr Provider gegen ID-Kit).
Token Exchange (RFC 8693) Besondere Fälle
Ein Token gegen ein anderes tauschen, für einen anderen Empfänger.
Textversion des Diagramms
API A → Provider (OP) : POST /token (grant_type=token-exchange, subject_token, audience=B)
Provider (OP): Prüft Rechte und Audience
Provider (OP) → API A: Access-Token für API B
API A → API B : Authorization: Bearer neues Token
Einsetzen, wenn: Eine API, die im Namen der Person eine andere aufrufen muss, oder Microservices, die die Identität weitergeben.
Was ihn auszeichnet: Geht von einem bereits erhaltenen Token aus, ohne neue Anmeldung. Kann Rechte reduzieren oder die Audience ändern.
ID-Kit kann ihn spielen: Test-Provider (Ihre Anwendung gegen ID-Kit) und Testanwendung (Ihr Provider gegen ID-Kit).
Logout (RP-initiiert und Back Channel) Session
Die Sitzung beim Provider beenden und die anderen Anwendungen benachrichtigen.
Textversion des Diagramms
Browser → Anwendung A: Klickt auf „Abmelden“
Anwendung A → Browser : 302 zu /logout (id_token_hint, post_logout_redirect_uri)
Browser → Provider (OP) : GET /logout
Provider (OP): Beendet die Provider-Sitzung
Provider (OP) → Anwendung B : POST logout_token (Back Channel)
Provider (OP) → Browser : 302 zu post_logout_redirect_uri
Einsetzen, wenn: Jede Anwendung mit Single Sign-On (SSO): Die Abmeldung muss sich fortpflanzen.
Was ihn auszeichnet: Der Back Channel benachrichtigt von Server zu Server, ohne über den Browser zu gehen (daher zuverlässig).
ID-Kit kann ihn spielen: Test-Provider (Ihre Anwendung gegen ID-Kit) und Testanwendung (Ihr Provider gegen ID-Kit).
Introspection und Revocation Prüfen
Den Provider fragen, ob ein Token noch gültig ist, oder es ungültig machen.
Textversion des Diagramms
API → Provider (OP) : POST /introspect (token)
Provider (OP) → API : { "active": true, scope, exp, sub }
API → Provider (OP) : POST /revoke (token)
Provider (OP) → API: 200 : Das Token ist ungültig
Einsetzen, wenn: Eine API, die ein undurchsichtiges Token erhält oder sofortigen Widerruf will.
Was ihn auszeichnet: Ein JWT lässt sich allein anhand seiner Signatur prüfen; ein undurchsichtiges Token erfordert diesen Aufruf.
ID-Kit kann ihn spielen: Test-Provider (Ihre Anwendung gegen ID-Kit) und Testanwendung (Ihr Provider gegen ID-Kit).
private_key_jwt und JWT Bearer (RFC 7523) In ID-Kit: Test-Provider
Der Client weist seine Identität mit einem mit seinem privaten Schlüssel signierten JWT nach, statt mit einem gemeinsamen Geheimnis.
Textversion des Diagramms
Dienst: Signiert ein JWT (iss, sub, aud, exp, jti)
Dienst → Provider (OP) : POST /token (client_assertion, client_assertion_type)
Provider (OP): Prüft die Signatur mit dem öffentlichen Schlüssel des Clients
Provider (OP) → Dienst : Access-Token
Einsetzen, wenn: Banken, Gesundheitswesen, sensible APIs, Unternehmensintegrationen: kein Geheimnis zu speichern oder zu rotieren.
Was ihn auszeichnet: Derselbe Austausch wie bei Client Credentials, aber die Authentifizierung ist eine signierte Assertion (client_assertion).
ID-Kit kann ihn auf der Seite des Test-Providers spielen (deklarieren Sie den öffentlichen Schlüssel Ihres Clients, Typ „Vertraulich per Schlüssel“). Auf Seite der Testanwendung noch nicht.
PAR und JAR (RFC 9126 und 9101) In ID-Kit
Die Autorisierungsanfrage wird von Server zu Server gepusht, statt im Klartext in der Adresse zu stehen.
Textversion des Diagramms
Anwendung → Provider (OP): POST /par (alle Parameter, signiert)
Anwendung → Browser : 302 zu /authorize?request_uri=…
Browser → Provider (OP) : GET /authorize?request_uri=…
Provider (OP) → Browser: Anmeldung, dann Weiterleitung mit dem Code
Einsetzen, wenn: FAPI-Anforderungen: verhindern, dass ein Parameter im Browser verändert oder gelesen wird.
Was ihn auszeichnet: Der Browser transportiert nur eine undurchsichtige request_uri.
ID-Kit kann ihn spielen: Test-Provider (Ihre Anwendung gegen ID-Kit) und Testanwendung (Ihr Provider gegen ID-Kit).
JARM (signierte Autorisierungsantwort) In ID-Kit (Test-Provider)
Der Provider signiert auch seine Antwort: Der Code kommt in einem JWT an, nicht im Klartext in der Adresse.
Textversion des Diagramms
Anwendung → Browser : 302 zu /authorize?response_mode=jwt
Browser → Provider (OP) : GET /authorize, dann Anmeldung
Provider (OP): Signiert ein JWT { iss, aud, code, state }
Provider (OP) → Browser : Weiterleitung zur Anwendung ?response=JWT
Browser → Anwendung : Leitet die Antwort weiter
Anwendung: Prüft die Signatur, iss, aud und liest dann den Code
Einsetzen, wenn: FAPI 2.0, regulierte Branchen, Schutz vor Mix-up-Angriffen zwischen Providern.
Was ihn auszeichnet: Ein einziger Parameter „response“ (JWT, signiert mit iss, aud, exp, code, state) ersetzt die einfachen Parameter.
ID-Kit kann ihn auf der Seite des Test-Providers spielen (deklarieren Sie den öffentlichen Schlüssel Ihres Clients, Typ „Vertraulich per Schlüssel“). Auf Seite der Testanwendung noch nicht.
DPoP (RFC 9449) In ID-Kit (Test-Provider)
Das Token ist an einen Schlüssel gebunden, den nur der Client besitzt: Ein gestohlenes Token ist unbrauchbar.
Textversion des Diagramms
Anwendung: Erzeugt ein Schlüsselpaar
Anwendung → Provider (OP): POST /token + DPoP-Header (signierter Nachweis)
Anwendung → API : Authorization: DPoP-Token + neuer DPoP-Nachweis
API: Prüft den Nachweis und die Bindung an den Schlüssel
Einsetzen, wenn: Hohe Sicherheit, exponierte SPAs, sensible APIs.
Was ihn auszeichnet: Jeder Aufruf kommt mit einem signierten Nachweis (DPoP-Header), der den Besitz des Schlüssels beweist.
ID-Kit kann ihn auf der Seite des Test-Providers spielen (deklarieren Sie den öffentlichen Schlüssel Ihres Clients, Typ „Vertraulich per Schlüssel“). Auf Seite der Testanwendung noch nicht.
CIBA (Client-Initiated Backchannel) In ID-Kit (Test-Provider)
Die Authentifizierung erfolgt auf dem Gerät der Person, vom Server ausgelöst.
Textversion des Diagramms
Anwendung → Provider (OP) : POST /bc-authorize (login_hint, binding_message)
Anwendung → Provider (OP): POST /token (auth_req_id) in einer Schleife oder Callback
Provider (OP) → Anwendung : Token
Einsetzen, wenn: Callcenter, Banken, Zahlungsbestätigung per Benachrichtigung.
Was ihn auszeichnet: Keine Browser-Weiterleitung: Der Provider kontaktiert die Person direkt.
ID-Kit kann ihn auf der Seite des Test-Providers spielen (deklarieren Sie den öffentlichen Schlüssel Ihres Clients, Typ „Vertraulich per Schlüssel“). Auf Seite der Testanwendung noch nicht.