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
@@ -20,6 +20,7 @@ const ACTION_OPTIONS = [
{ value: 'LOGIN', label: 'Login' },
{ value: 'LOGOUT', label: 'Logout' },
{ value: 'LOGIN_FAILED', label: 'Login fehlgeschlagen' },
{ value: 'TOKEN_REFRESH', label: 'Sitzung verlängert' },
];
const SENSITIVITY_OPTIONS = [
@@ -68,6 +69,7 @@ function getActionColor(action: AuditAction): string {
case 'LOGIN': return 'bg-teal-100 text-teal-800';
case 'LOGOUT': return 'bg-gray-100 text-gray-800';
case 'LOGIN_FAILED': return 'bg-red-200 text-red-900';
case 'TOKEN_REFRESH': return 'bg-slate-50 text-slate-500';
default: return 'bg-gray-100 text-gray-800';
}
}