4.1 KiB
Adminbereich
Die Systemrolle ADMIN kann aus den getrennten Quellen MANUAL und OIDC wirksam sein. Die
Benutzerverwaltung zeigt die Herkunft; das externe Mapping ist nur über die Umgebung konfigurierbar.
Siehe Administratoren über OIDC.
Der Adminbereich liegt im Frontend unter /admin und verwendet dieselbe
serverseitige Authentifizierung, CSRF-Pruefung und Permission-Logik wie die
restliche Anwendung. Angular blendet Navigation und Aktionen nur fuer passende
Permissions ein; verbindlich prueft immer das Backend.
Permissions
Die administrativen Permissions sind fest in
apps/backend/src/roles/permissions.ts definiert:
users.read: Benutzer anzeigen, suchen und filternusers.manage: Benutzer aktivieren, deaktivieren und Rollen zuweisenroles.read: Rollen und Permissions anzeigenroles.manage: Rollen anlegen, bearbeiten und loeschensessions.manage: Sessions anderer Benutzer anzeigen und beendenaudit.read: administratives Audit-Log anzeigen
Benutzer haben keine direkten Permissions. Effektive Permissions werden aus allen Rollen abgeleitet. Rollen- und Benutzerverwaltung laufen ueber Services; Controller greifen nicht direkt auf TypeORM-Repositories zu.
Systemrollen
Es gibt mindestens die Systemrollen admin und user.
administ geschuetzt, nicht loeschbar und muss administrative Permissions behalten.userist geschuetzt, nicht loeschbar und Standardrolle fuer neue Benutzer.- Eigene Rollen koennen angelegt, umbenannt, geloescht und mit bekannten Permissions versehen werden.
Eine Rolle kann nur geloescht werden, wenn sie keinem Benutzer mehr zugewiesen
ist. Andernfalls antwortet die API mit ROLE_STILL_ASSIGNED.
Letzter aktiver Administrator
Die Anwendung darf nie ohne aktiven Administrator enden. Sicherheitskritische
Aktionen laufen transaktional und halten einen MySQL-Lock
business_app_admin_integrity:
- Benutzer deaktivieren
- Rollen eines Benutzers aendern
- Adminrolle entfernen
- Adminrolle in ihren Permissions veraendern
- Rolle loeschen
Wenn eine Aktion den letzten aktiven Administrator entfernen wuerde, antwortet
die API mit HTTP 409 und LAST_ACTIVE_ADMIN_REQUIRED.
Benutzerstatus und Sessions
Benutzer werden weiterhin ausschliesslich ueber OIDC angelegt. Name und E-Mail kommen vom Identity Provider und sind im Adminbereich nicht editierbar.
Beim Deaktivieren wird der Benutzer sofort inaktiv gesetzt und alle aktiven Sessions des Benutzers werden widerrufen. Neue OIDC-Logins deaktivierter Benutzer werden trotz erfolgreicher IdP-Authentifizierung abgewiesen. Beim erneuten Aktivieren darf sich der Benutzer wieder anmelden; alte Sessions werden nicht wiederhergestellt.
Admin-Session-Endpunkte geben nur eine sichere, gekuerzte Session-Referenz, Zeitpunkte, User-Agent, IP-Annaeherung und Status zurueck. Tokens und rohe Session-Secrets werden nie ausgegeben.
API-Endpunkte
Benutzer:
GET /api/admin/usersGET /api/admin/users/:idPATCH /api/admin/users/:id/deactivatePATCH /api/admin/users/:id/activatePOST /api/admin/users/:id/roles/:roleIdDELETE /api/admin/users/:id/roles/:roleIdGET /api/admin/users/:id/sessionsDELETE /api/admin/users/:userId/sessions/:sessionIdDELETE /api/admin/users/:id/sessions
Rollen:
GET /api/admin/rolesGET /api/admin/roles/:idPOST /api/admin/rolesPUT /api/admin/roles/:idDELETE /api/admin/roles/:id
Audit:
GET /api/audit-log
Audit-Log
Administrative Aenderungen werden auditierbar protokolliert, darunter:
USER_ACTIVATEDUSER_DEACTIVATEDUSER_ROLE_ASSIGNEDUSER_ROLE_REMOVEDROLE_CREATEDROLE_UPDATEDROLE_DELETEDROLE_PERMISSIONS_UPDATEDSESSION_REVOKEDALL_USER_SESSIONS_REVOKED
Gespeichert werden fachliche IDs, Request-ID und minimale Metadaten. Tokens, Secrets und vollstaendige Sessiondaten werden nicht geloggt.
Migration
Die Admin-Erweiterung fuegt roles.description hinzu. Vor dem Deployment muss
die Migration ausgefuehrt werden:
npm run migration:run
Der normale App-Start fuehrt Migrationen weiterhin nicht automatisch aus, sondern meldet fehlende Migrationen ueber die Readiness-Pruefung.