Auf dieser Seite
4 Min. Lesezeit

Tag 4 - Dex-Lokal-Login per LDAP gegen OpenCloud-IDM

Dex-LDAP-Connector zum integrierten OpenCloud-IDM, LDAPS-TLS-Zertifikatsfix und GitHub-Issue #1 mit automatisierten Tests in PASS geschlossen.

Einleitung

Tag 4 (Fenster der letzten vier Stunden am 27. Mai 2026, ~11:40–15:40 CEST auf dem Produktions-Debian-VPS) konzentriert sich auf ein einziges Authentifizierungsziel: der lokale Login muss jeden Benutzer aus dem integrierten OpenCloud-IDM akzeptieren (gleiche uid und Passwort wie in den Einstellungen) und weiterhin Dex-OIDC-Tokens für den Proxy ausgeben.

Dex' statischer Passwort-Speicher wird durch einen LDAP-Connector zum IDM-LDAPS ersetzt, das TLS-Zertifikat des internen LDAP-Dienstes korrigiert, und die Autoagents-Schleife schließt GitHub-Issue #1 mit automatisierten Tests in PASS.

Zusammenfassung

Tagesergebnis

  • Dex ↔ IDM: ldap-Connector → ldaps://opencloud:9235, Base ou=users,o=libregraph-idm; Dex im Docker-Netzwerk opencloud_opencloud-net mit Config/Daten-Volumes für CA idm/ldap.crt.
  • OpenCloud: IDM_LDAPS_ADDR=0.0.0.0:9235 im External-Proxy-Overlay; login.html nutzt connector_id=ldap; nginx und Auth-JSON auf cloud.km0digital.com ausgerichtet.
  • IDM-TLS: Zertifikat mit SAN DNS:opencloud regeneriert (zuvor nur localhost); Skript regenerate-opencloud-idm-ldap-cert.sh.
  • Autoagents: Task PASS geschlossen; Paketversion 1.0.18; manueller Login mit zwei verschiedenen Benutzern ausstehend (Operator).

Problem

GitHub #1

Der hybride Flow leitete bereits Google/Apple und lokalen Login über Dex, aber der lokale Connector stützte sich auf Dex' statischen Passwort-Speicher: er funktionierte nur für vordefinierte Zugangsdaten, nicht für alle in OpenClouds IDM erstellten inetOrgPerson-Benutzer.

Anforderung: Zugangsdaten mit OpenCloud-Einstellungen vereinheitlichen und den OIDC-Issuer (OC_OIDC_ISSUER) beibehalten, den der Proxy nutzt.

Lösung

Dex-LDAP- + IDM-Integration

  • Dex: type: ldap-Connector in dex/config.yaml; lokale Passwort-DB entfernt.
  • Dex-Compose: Beitritt zu opencloud_opencloud-net; Mounts von opencloud-config und opencloud-data zum Lesen der CA und des gemounteten Config-idm_password.
  • OpenCloud-Overlay: IDM_LDAPS_ADDR=0.0.0.0:9235, damit Dex LDAPS über Hostname opencloud erreicht.
  • UI: login.html mit „lokal“-Button und connector_id=ldap; nginx /dex/auth ohne Connector → Login-Selector.

Ablauf

Login nach den Änderungen

login.html
  ├── Google  → Dex connector google  → OIDC token → OpenCloud proxy
  ├── Apple   → Dex connector apple   → (wenn konfiguriert)
  └── Local   → Dex connector ldap    → IDM LDAPS opencloud:9235
                                         (beliebige inetOrgPerson uid + Passwort)

Soziale Connectors folgen demselben OIDC-Muster; lokaler Login ist keine feste Liste in Dex mehr, sondern ein LDAP-Bind gegen das eingebettete Verzeichnis des Stacks.

Collabora

Co-Bearbeitung nach vereinheitlichtem Login

Die in Tag 3 dokumentierte Collabora-Integration ermöglicht Office-Bearbeitung im Browser für alle authentifizierten Nutzer. Mit dem Dex-LDAP-Connector von Tag 4 kann jeder IDM-Nutzer (gleiches uid und Passwort wie in den Einstellungen) sich anmelden und geteilte Tabellen oder Präsentationen öffnen; mehrere Personen können dieselbe XLSX- oder PPT-Datei gleichzeitig bearbeiten.

TLS

IDM-LDAPS-Zertifikatsfix

Beim Test erreichte Dex opencloud:9235, aber das autogenerierte ldap.crt enthielt nur localhost im SAN → Fehler TLS certificate is valid for localhost, not opencloud.

Fix (0a042db): Skript scripts/regenerate-opencloud-idm-ldap-cert.sh regeneriert das Zertifikat mit DNS:localhost,DNS:opencloud,IP:127.0.0.1 und --restart-Option; dokumentiert in Runbook und Dex-README.

Commits

Tagesfenster (CEST)

  • cf5a561 (15:27) - feat(auth): Dex LDAP login against OpenCloud IDM for all users.
  • 0a042db (15:39) - fix(dex): regenerate IDM LDAP cert with opencloud SAN for Dex TLS.

Autoagents

Abschluss-Checks

  • IDM-Zert-SAN enthält opencloud - PASS.
  • Dex LDAP host: opencloud:9235 - PASS.
  • curl mit connector_id=ldap/dex/auth/ldap - PASS.
  • Falsches Passwort → HTTP 401, LDAP-Bind, kein x509 in Logs - PASS.
  • Google-Connector-Smoke - PASS.
  • Manueller Login zwei verschiedene Benutzer → /files - NICHT VERIFIZIERT (Operator).

Deployment

Verifikation (Operator)

cd /opt/opencloud
./scripts/git-sync-main.sh
./scripts/apply-opencloud-compose-overrides.sh
./scripts/regenerate-opencloud-idm-ldap-cert.sh --restart
rsync -a /opt/opencloud/host-www/opencloud-auth/ /var/www/opencloud-auth/
cd dex && docker compose up -d

curl -sI https://cloud.km0digital.com/login.html

Manuell: privates Fenster → login.html → lokaler Login mit zwei verschiedenen OpenCloud-uids; erwartet /oidc-callback.html dann /files ohne JWKS-Fehler oder /graph/v1.0/me 500.

Benutzerpasswörter und IDM-Bind-Secrets sind nicht Teil dieses Eintrags; der Happy Path mit zwei echten Konten bleibt menschliche Verifikation in Produktion.

Nächster Schritt

Tag 5

Tag 5 dokumentiert keine Deployments: er hält ein Visionstreffen in Masnou fest - warum wir glauben, dass nützliche Technologie heute schon ohne Big Tech angeboten werden kann. In der Zwischenzeit: die Services erkunden oder den Bericht zu Tag 5 lesen.