Signierte Sitzungs-Cookies mit jose, OIDC ueber openid-client (authentik), Schutz in proxy.ts, Anmeldeseite, Audit-Log-Ansicht, Sicherheits-Kopfzeilen und Rate-Limit. Kein Auth.js, weil Version 5 Beta ist. 147 Tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1.6 KiB
1.6 KiB
#013 Authentifizierung und Audit-Log
Status: erledigt Meilenstein: v0.9.0 Labels: sicherheit Geschätzt: 6 h Tatsächlich: 0 h 30 min
Ziel
Zugriff auf das Dashboard absichern und Änderungen nachvollziehbar machen.
Aufgaben
- Auth.js: OIDC (authentik), lokaler Admin als Fallback (argon2id)
- Middleware schützt alle UI-Routen, nicht die Agent-API
- Login-Seite im AdminLTE-Stil mit Logo
- Rollen: nur Administratoren (Rückmeldung Florian, keine Nur-Lese-Rolle)
- Audit-Log-Ansicht mit Filter
- Login-Rate-Limit, Security-Header
Akzeptanzkriterien
- Ohne Login ist keine UI-Seite erreichbar
- Login über authentik funktioniert; lokaler Admin auch bei ausgefallenem OIDC
- readonly-Benutzer kann nichts ändern
Abhängigkeiten
#006
Notizen / Entscheidungen
- Kein Auth.js: Version 5 ist weiterhin Beta. Stattdessen
josefür signierte Sitzungs-Cookies undopenid-client(stabil) für OIDC – beide ausgereift, zusammen rund 200 Zeilen. - In Next 16 heißt die Datei zum Schutz von Routen
proxy.ts(frühermiddleware.ts). - Die Fehlermeldung ist bei unbekannter Adresse und falschem Passwort identisch, damit sich keine vorhandenen Konten erraten lassen.
- Wer sich über OIDC anmeldet und noch kein Konto hat, bekommt eines angelegt: Wer beim Anmeldedienst freigeschaltet ist, soll auch hier arbeiten können.
- Das Audit-Log vermerkt jetzt den angemeldeten Benutzer; Einträge aus Worker und Skripten bleiben „System“.
- Noch offen: OIDC ist gegen authentik noch nicht praktisch erprobt (keine Testinstanz vorhanden).