forked from lukas/nixos-config
Captures the decision that new traefik-routes-external.nix entries should be OIDC-gated (or have equivalent own auth) unless there's an explicit reason not to, and flags mealie/trek from PR #8 as pending that follow-up. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
# LDAP-Gruppen und Dienstzugriff
|
|
|
|
Dex authentifiziert die Benutzer gegen LLDAP und übernimmt die direkten
|
|
Gruppenmitgliedschaften als OIDC-Claim `groups`. Die Dienste prüfen diesen
|
|
Claim jeweils selbst. Gruppenmitgliedschaften werden derzeit in LLDAP gepflegt
|
|
und nicht als Klartext in dieser Nix-Konfiguration gespeichert.
|
|
|
|
## Policy: externe Dienste brauchen OIDC-Absicherung
|
|
|
|
Festgehalten am 29.07.2026: Neue Einträge in
|
|
`traefik-routes-external.nix` (öffentlich erreichbar) sollen im
|
|
Regelfall über einen OIDC-Gruppen-Claim (Dex + LLDAP, wie oben) oder
|
|
eine gleichwertige eigene Authentifizierung des Dienstes abgesichert
|
|
sein. Ausnahmen sind explizit zu begründen — z. B. bewusst öffentlicher
|
|
Content (`data`, `board`) oder Dienste mit eigenem, unabhängigem
|
|
Login-System (GoToSocial/phanpy).
|
|
|
|
**Noch offen:** `mealie` und `trek` (PR #8, `fastpi`-Dienste von alfo,
|
|
29.07.2026 gemerged) laufen aktuell ohne Gruppen-Check extern. Soll bei
|
|
Gelegenheit nachgereicht werden — Absicherung prüfen/ergänzen, sobald
|
|
die Dienste selbst laufen (`trek` antwortete beim Rollout noch mit 502).
|
|
|
|
## Aktuelle Gruppen
|
|
|
|
| Gruppe | Zweck | Dienst |
|
|
| --- | --- | --- |
|
|
| `intern` | bestehender Tailnet-/Headscale-Zugriff | Headscale |
|
|
| `forgejo` | Anmeldung bei Forgejo | Forgejo |
|
|
| `gotosocial` | Anmeldung bei GoToSocial | GoToSocial |
|
|
| `gotosocial_admin` | GoToSocial-Administrationsrechte | GoToSocial |
|
|
|
|
`lukas` ist Mitglied von `forgejo` und `gotosocial`. `alfo` ist ebenfalls in
|
|
beiden Gruppen. `admin` ist Mitglied von `gotosocial` und
|
|
`gotosocial_admin`.
|
|
|
|
## Dienstregeln
|
|
|
|
- Forgejo verwendet für die Dex-OIDC-Quelle den zusätzlichen Scope `groups`,
|
|
den Claim `groups` und verlangt den Wert `forgejo`.
|
|
- GoToSocial erlaubt nur den Claimwert `gotosocial`; der Claimwert
|
|
`gotosocial_admin` verleiht zusätzlich Administratorrechte.
|
|
- Die Website `0ff.space` ist über oauth2-proxy und Dex für authentifizierte
|
|
LDAP-Benutzer geschützt. ActivityPub-Discovery- und Föderationspfade bleiben
|
|
öffentlich.
|
|
|
|
Forgejo zeigt bei einem fehlenden erforderlichen Claim irreführend
|
|
„Account is suspended“. Das bedeutet in diesem Fall, dass der lokale Forgejo-
|
|
Account gar nicht angelegt wurde.
|
|
|
|
## Verifizierter Teststand
|
|
|
|
- `testcal-a` gehört zu `forgejo`: Forgejo-OIDC-Login und Registrierung waren
|
|
erfolgreich; Dex meldete `groups=[forgejo]`.
|
|
- `testcal-b` gehört zu `gotosocial`: GoToSocial-OIDC-Login funktioniert,
|
|
Forgejo weist den Login erwartungsgemäß ab; Dex meldete
|
|
`groups=[gotosocial]`.
|
|
- Ein erfolgreicher Website-Login von `testcal-a` wurde über oauth2-proxy mit
|
|
HTTP 200 bestätigt.
|
|
|
|
Bei neuen Benutzern: zuerst den LLDAP-Account anlegen, die erforderliche
|
|
Dienstgruppe zuweisen und anschließend den OIDC-Login testen. Passwörter und
|
|
temporäre Zugangsdaten gehören nicht in dieses Repository.
|