This commit is contained in:
Bastian Wagner
2026-07-16 15:23:53 +02:00
parent 543e8273a7
commit c03b2e17f5
114 changed files with 7631 additions and 506 deletions

View File

@@ -20,6 +20,12 @@ Der Login nutzt Authorization Code Flow mit PKCE:
Erlaubte Signaturalgorithmen werden ueber `OIDC_ALLOWED_ALGORITHMS` gesetzt.
`none` ist explizit verboten.
Beim Logout wird zuerst die lokale Session widerrufen und das Session-/CSRF-Cookie
geloescht. Anschliessend redirectet das Backend zum OIDC
`end_session_endpoint` aus Discovery oder zur optionalen `OIDC_LOGOUT_URL`. Wenn
die Session ein ID-Token enthaelt, wird es nur als `id_token_hint` an den IdP
gegeben und nicht an das Frontend ausgeliefert.
## Sessions
Sessions liegen in MySQL. Das Session-Cookie enthaelt keine Tokens oder
@@ -60,6 +66,18 @@ Backend-Controller schuetzen Endpunkte mit:
Angular nutzt Permissions nur fuer Navigation und Darstellung. Eine versteckte
Schaltflaeche ist keine Sicherheitsgrenze.
Administrative Benutzer-, Rollen- und Session-Aktionen sind unter `/api/admin/*`
mit `users.read`, `users.manage`, `roles.read`, `roles.manage`,
`sessions.manage` und `audit.read` geschuetzt. Aktionen, die den letzten aktiven
Administrator entfernen koennten, laufen transaktional und antworten bei Verstoss
mit `LAST_ACTIVE_ADMIN_REQUIRED`.
Benachrichtigungen sind benutzerbezogene Daten. Normale Notification-Endpunkte
bestimmen den Benutzer ausschliesslich aus der serverseitig aufgeloesten Session.
Benutzer-IDs werden fuer eigene Benachrichtigungen nicht als Query-Parameter oder
Body-Feld akzeptiert. Fremde oder geloeschte Notification-IDs werden als nicht
gefunden behandelt.
## Benutzerstatus
Deaktivierte Benutzer werden trotz erfolgreichem IdP-Login abgewiesen. Aktive