Audit-Log: stiller Token-Refresh entrauscht (eigene Action TOKEN_REFRESH)

POST /auth/refresh wurde als CREATE / "Anmeldung erstellt" / CRITICAL /
anonymous geloggt und sah damit wie eine anonyme Login-Flut aus. Es ist
aber der regulaere Silent-Refresh des Frontend-Interceptors (Access-Token
lebt nur im Speicher -> nach Reload/401 einmaliger Cookie-Refresh).

- Neuer AuditAction-Wert TOKEN_REFRESH (Migration 20260818120000,
  idempotentes MODIFY COLUMN)
- determineAction() mappt /auth/refresh -> TOKEN_REFRESH, Label
  "Sitzung verlaengert (Token erneuert)", Sensitivitaet explizit LOW
  (statt Default Authentication -> CRITICAL)
- LOGIN/LOGOUT/LOGIN_FAILED bleiben unveraendert CRITICAL
- Frontend: Filter-Option + dezente Badge-Farbe + Typ-Union
- anonymous bewusst beibehalten (Endpoint ohne authenticate-Middleware)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-18 17:51:21 +02:00
co-authored by Claude Opus 4.8
parent 7bdb885a10
commit de0d6bd817
6 changed files with 37 additions and 1 deletions
+16
View File
@@ -97,6 +97,22 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🔇 Audit-Log: stiller Token-Refresh entrauscht (`TOKEN_REFRESH`)** (2026-08-18)
- Automatische `POST /auth/refresh`-Aufrufe (Interceptor bei 401 / nach
Seiten-Reload, da Access-Token nur im Speicher) wurden als `CREATE` /
„Anmeldung erstellt" / **CRITICAL** / User `anonymous` geloggt → sah aus wie
anonyme Login-Flut, war aber die eigene Session.
- Neuer `AuditAction`-Wert **`TOKEN_REFRESH`** (Enum-Migration
`20260818120000_audit_token_refresh_action`, idempotentes `MODIFY COLUMN`).
`determineAction()` erkennt `/auth/refresh` → eigene Action; Label
„Sitzung verlängert (Token erneuert)"; Sensitivität in der Middleware
explizit auf **LOW** (statt Default `Authentication → CRITICAL`).
- Frontend `AuditLogs.tsx`: Filter-Option „Sitzung verlängert" + dezente
Badge-Farbe (slate); Typ-Union ergänzt. `anonymous` bleibt (Endpoint läuft
ohne `authenticate`-Middleware, authentifiziert per Cookie im Service)
bewusst nicht geändert (Option 1).
- Verifiziert: Migration auf Dev-DB aktiv, `tsc` + `vite build` grün.
- [x] **🔒 Mass-Assignment-Schutz: Nested-Vertragsdetails (Pentest R162-01)** (2026-08-18)
- `createContract`/`updateContract` spreadeten `energyDetails`/`tvDetails`/
`carInsuranceDetails`/`mobileDetails` (via `...mobileData`) roh an Prisma →