# 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.