# Auth/SSO Smoke-Test Letzte Aktualisierung: 2026-03-06 Dieser Runbook prüft die 5 kritischen Flows nach Auth/SSO-Änderungen: - Login (Passwort) - Microsoft Start - Microsoft Callback - Tenant-SSO speichern - Logout ## Voraussetzungen - Test-User ist aktiv und hat mindestens einen aktiven Tenant. - Es gibt einen Tenant mit Microsoft-SSO-Konfiguration. - Für Microsoft-Flow: gültige Tenant-SSO-Credentials vorhanden (Shared oder Override). - Testumgebung läuft und du bist als Admin eingeloggt. ## 1) Login (Passwort) 1. `login` aufrufen (optional `login?tenant=`). 2. Gültige E-Mail + Passwort eingeben. 3. Erwartung: - Login erfolgreich, Redirect auf `admin`. - Session enthält `user`, `available_tenants`, `current_tenant`. - Kein Fehler-Flash. Negativtest: - Falsches Passwort -> generischer Fehler (kein Account-Leak), kein Login. ## 2) Microsoft Start (`auth/microsoft/start`) 1. `auth/microsoft/start?tenant=` aufrufen. 2. Erwartung: - Bei gültigem Tenant + SSO-Config: Redirect zur Microsoft-Authorize-URL. - URL enthält `state`, `nonce`, PKCE (`code_challenge`). 3. Negativtest: - Ungültiger Tenant-Slug -> Redirect auf `login` mit passendem Flash. - SSO deaktiviert/inkomplett -> Redirect zurück auf Tenant-Login mit passendem Flash. ## 3) Microsoft Callback (`auth/microsoft/callback`) 1. Erfolgreichen Callback durchlaufen lassen. 2. Erwartung: - `state` wird einmalig konsumiert (kein Replay). - ID-Token-Prüfungen greifen (`aud`, `iss`, `tid`, `exp/nbf`, `nonce`, Signatur). - User wird verknüpft/provisioniert und auf `admin` weitergeleitet. Negativtests: - Callback mit altem/wiederverwendetem `state` -> Login schlägt sauber fehl. - Callback ohne `code`/mit Fehler -> Redirect `login` mit Fehler-Flash. ## 4) Tenant-SSO speichern (Admin) 1. `admin/tenants/edit/` öffnen, Tab `SSO`. 2. Pflichtwerte setzen: - `Microsoft login` aktiv - `Entra tenant ID` - Shared App oder Override-Credentials vollständig 3. Speichern. 4. Erwartung: - Save erfolgreich. - UI-Status „Konfiguration vollständig“. - Bei `enforce_microsoft_login=1` und unvollständiger Config: Save wird blockiert. ## 5) Logout 1. Als eingeloggter User `logout` aufrufen. 2. Erwartung: - Session beendet. - Remember-Me Token wird vergessen. - Redirect auf `login`. ## Schnellcheck (optional) - In Browser A einloggen, dann in Browser B denselben User ändern (z. B. deaktivieren). - In Browser A nächste Anfrage auslösen. - Erwartung: bestehende Session-Refresh-Logik greift (ggf. Logout bei inaktiv/ohne Tenant).