Anmeldung, von Anfang bis Ende, ohne Cookies.

Fünf Schritte von „Anmelden klicken" bis zum signierten JWT in der Relying Party. Der IdP vermittelt Identität; das Passwort verlässt nie den Browser; unterwegs sind ausschließlich kurzlebige, signierte Tokens.

CodeB-IdP /oidc.ashx + /login.html RS256 · PRO TENANT EIGENER SCHLÜSSEL U Browser NUTZER · PKCE NUR HA1-HASH RP Ihre Anwendung RELYING PARTY PRÜFT JWT 1. /authorize 2. Login + HA1 3. ?code=...&state=... 4. POST /token (PKCE) 5. access + id + refresh PASSWORT VERLÄSST NIE DEN BROWSER · KEIN COOKIE WIRD GESETZT
Front-Channel (Browser-Redirects) Back-Channel (Server-zu-Server)

Fünf Hops · Passwort verlässt nie den Browser · kein Cookie gesetzt

Browser → IdP
01 / Authorize

Die PKCE-Challenge

Der Nutzer klickt Anmelden. Der Browser erzeugt einen zufälligen Code Verifier, hasht ihn zu einer Code Challenge, legt beide im sessionStorage ab und leitet auf /oidc.ashx?action=authorize mit Challenge und einem CSRF-state-Token weiter.

Browser → IdP
02 / Login

Nur HA1, niemals Klartext

/login.html zeigt ein Formular. Der Browser berechnet MD5(user:realm:password) und sendet ausschließlich diesen Hash per POST. Der Server vergleicht konstant-zeitig gegen den gespeicherten HA1. Das Klartext-Passwort verlässt nie den Browser; der Server sieht es selbst bei vollständigem Request-Log nicht.

IdP → Browser → RP
03 / Code

Einmal-Auth-Code

Bei HA1-Übereinstimmung erzeugt der IdP einen 60-Sekunden-Einmal-Auth-Code und leitet den Browser auf Ihre redirect_uri mit ?code=...&state=... um. Cookie-frei: Der IdP setzt oder liest kein Session-Cookie — der Code wandert ausschließlich in der URL.

RP → IdP
04 / Token

Code + Verifier tauschen

Ihre Anwendung prüft state und sendet dann Code plus PKCE-Code Verifier per POST an /oidc.ashx?action=token. Der IdP bestätigt, dass der Verifier zur ursprünglichen Challenge hasht, verbrennt den Code und liefert drei JWTs zurück.

IdP → RP
05 / Tokens

Access + ID + Refresh

Drei RS256-signierte JWTs. access_token (1 Stunde) für API-Aufrufe. id_token (1 Stunde) trägt Identitäts-Claims (sub, role, email). refresh_token (4 Stunden, einmalig rotierend) kauft das nächste Access-Token. Ihre Anwendung prüft die Signaturen gegen das JWKS unter /.well-known/jwks.json.

RP → Nutzer
06 / Angemeldet

Sie entscheiden, wie es weitergeht

Aus dem geprüften id_token haben Sie sub (den Benutzernamen) und role (admin / user / siponly / guest). Legen Sie den Nutzer in Ihre authentifizierte Sitzung ab. Brauchen Sie weitere Profilfelder, rufen Sie /userinfo mit dem Access-Token auf.

Was der IdP sieht vs. was er speichert

Der Job des IdP ist Identitätsprüfung, keine Überwachung. Jede Anfrage erhält das Minimum an Daten, das genau diese eine Aufgabe erfordert, und nichts wird über das hinaus persistiert, was Audit und Token-Validierung verlangen.

Wo die Vertrauensgrenzen verlaufen

Ein OIDC-Ablauf hat drei Akteure (Nutzer, IdP, Relying Party). Vertrauen ist beidseitig und begrenzt:

Mandanten-Isolation im Ablauf

Die Mandanten-Identität ist der Request-Host. Das Diagramm oben läuft pro Mandant einmal, ohne gemeinsamen Zustand zwischen Mandanten:

Gegenüber dem Medien-Datenfluss

Der Medien-Datenfluss ist Peer-to-Peer: Video und Audio berühren den Server nie, nur das Signaling. OIDC hat die entgegengesetzte Form — alles geht über den IdP, weil Identität per Definition zentralisiert ist. Gemeinsam ist beiden, was NICHT gespeichert wird: Der IdP behält Tokens nach Ausgabe nicht; der Signaling-Server behält Medien-Frames nach Weiterleitung der SDP nicht.

Integration umsetzen? → OIDC-Integrations-Anleitung · OIDC-Übersicht