#013 Authentifizierung und Audit-Log #13

Closed
opened 2026-09-17 19:43:03 +00:00 by florian.wilde · 0 comments
Owner

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).
  • Nachtrag (Fehler aus dem Betrieb): Das Sitzungs-Cookie bekam Secure anhand von NODE_ENV. Ein
    produktiv gebautes Dashboard über http:// (lokal oder im LAN, etwa nach der LXC-Installation) setzte
    damit ein Cookie, das der Browser verwirft – jeder Klick führte zurück zur Anmeldung. Jetzt entscheidet
    das Schema in APP_URL. Die Anmeldung läuft außerdem über ein normales Formular statt über eine
    Server-Action und ist damit ohne JavaScript nutzbar und mit curl prüfbar.

Quelle: docs/issues/013-authentifizierung.md – dort wird dieses Issue gepflegt.

## Ziel Zugriff auf das Dashboard absichern und Änderungen nachvollziehbar machen. ## Aufgaben - [x] Auth.js: OIDC (authentik), lokaler Admin als Fallback (argon2id) - [x] Middleware schützt alle UI-Routen, nicht die Agent-API - [x] Login-Seite im AdminLTE-Stil mit Logo - [x] Rollen: nur Administratoren (Rückmeldung Florian, keine Nur-Lese-Rolle) - [x] Audit-Log-Ansicht mit Filter - [x] Login-Rate-Limit, Security-Header ## Akzeptanzkriterien - [x] Ohne Login ist keine UI-Seite erreichbar - [x] Login über authentik funktioniert; lokaler Admin auch bei ausgefallenem OIDC - [x] 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). - **Nachtrag (Fehler aus dem Betrieb):** Das Sitzungs-Cookie bekam `Secure` anhand von `NODE_ENV`. Ein produktiv gebautes Dashboard über `http://` (lokal oder im LAN, etwa nach der LXC-Installation) setzte damit ein Cookie, das der Browser verwirft – jeder Klick führte zurück zur Anmeldung. Jetzt entscheidet das Schema in `APP_URL`. Die Anmeldung läuft außerdem über ein normales Formular statt über eine Server-Action und ist damit ohne JavaScript nutzbar und mit `curl` prüfbar. --- Quelle: `docs/issues/013-authentifizierung.md` – dort wird dieses Issue gepflegt.
florian.wilde added this to the v0.9.0 milestone 2026-09-17 19:43:03 +00:00
florian.wilde added the sicherheit label 2026-09-17 19:43:03 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: florian.wilde/ProxLedger#13