Files
ProxLedger/docs/issues/013-authentifizierung.md
T
florian.wildeandClaude Opus 5 ee487775ec feat(auth): Anmeldung mit Passwort und OIDC, Schutz aller Seiten (#013)
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>
2026-09-17 22:40:03 +02:00

1.6 KiB
Raw Blame History

#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 jose für signierte Sitzungs-Cookies und openid-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üher middleware.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).