En aquesta pàgina
4 min de lectura

Dia 4 - Login local Dex LDAP contra IDM OpenCloud

Connector LDAP de Dex cap a l'IDM integrat d'OpenCloud, correcció TLS del certificat LDAPS i tancament de la issue #1 amb proves automatitzades.

Introducció

El dia 4 (finestra de les últimes quatre hores del 27 de maig de 2026, ~11:40–15:40 CEST al VPS Debian de producció) se centra en un únic objectiu d'autenticació: que el login local accepti qualsevol usuari de l'IDM integrat d'OpenCloud (mateix uid i contrasenya que a Configuració) i segueixi emetent tokens OIDC de Dex per al proxy.

Es substitueix l'emmagatzematge estàtic de contrasenyes de Dex per un connector LDAP cap a LDAPS de l'IDM, es corregeix el certificat TLS del servei LDAP intern i el bucle autoagents tanca la issue #1 de GitHub amb proves automatitzades en PASS.

Resum

Resultat del dia

  • Dex ↔ IDM: connector ldapldaps://opencloud:9235, base ou=users,o=libregraph-idm; Dex a la xarxa Docker opencloud_opencloud-net amb volums de config/dades per a CA idm/ldap.crt.
  • OpenCloud: IDM_LDAPS_ADDR=0.0.0.0:9235 a l'overlay external-proxy; login.html usa connector_id=ldap; nginx i JSON d'auth alineats amb cloud.km0digital.com.
  • TLS IDM: certificat regenerat amb SAN DNS:opencloud (abans només localhost); script regenerate-opencloud-idm-ldap-cert.sh.
  • Autoagents: tasca tancada PASS; versió del paquet 1.0.18; login manual amb dos usuaris diferents pendent d'operador.

Problema

GitHub #1

El flux híbrid ja enrutava Google/Apple i login local per Dex, però el connector local depenia d'un password store estàtic a Dex: només funcionava per a credencials predefinides, no per a tots els usuaris inetOrgPerson creats a l'IDM d'OpenCloud.

El requisit era unificar credencials amb Configuració d'OpenCloud i mantenir l'emissor OIDC (OC_OIDC_ISSUER) que consumeix el proxy.

Solució

Integració Dex LDAP + IDM

  • Dex: connector type: ldap a dex/config.yaml; eliminat el password DB per a usuaris locals.
  • Compose Dex: unió a opencloud_opencloud-net; muntatge de volums opencloud-config i opencloud-data per llegir CA i idm_password del config muntat.
  • Overlay OpenCloud: IDM_LDAPS_ADDR=0.0.0.0:9235 perquè Dex arribi a LDAPS per hostname opencloud.
  • UI: login.html amb botó «local» i connector_id=ldap; rutes nginx /dex/auth sense connector → selector de login.

Flux

Login després dels canvis

login.html
  ├── Google  → Dex connector google  → token OIDC → proxy OpenCloud
  ├── Apple   → Dex connector apple   → (quan estigui configurat)
  └── Local   → Dex connector ldap    → IDM LDAPS opencloud:9235
                                         (qualsevol uid inetOrgPerson + contrasenya)

Els connectors socials segueixen el mateix patró OIDC; el local deixa de ser una llista fixa a Dex i passa a ser un bind LDAP contra el directori embarcat de l'stack.

Collabora

Coedició després del login unificat

La integració Collabora documentada al dia 3 habilita l'edició Office al navegador per a tots els usuaris autenticats. Amb el connector Dex LDAP del dia 4, qualsevol usuari de l'IDM (mateix uid i contrasenya que a Configuració) pot iniciar sessió i obrir fulls de càlcul o presentacions compartides; diverses persones poden editar el mateix fitxer XLSX o PPT alhora.

TLS

Fix certificat IDM LDAPS

Durant les proves, Dex arribava a opencloud:9235 però el ldap.crt autogenerat només incloïa localhost al SAN → error TLS certificate is valid for localhost, not opencloud.

Correcció (0a042db): script scripts/regenerate-opencloud-idm-ldap-cert.sh que regenera el certificat amb DNS:localhost,DNS:opencloud,IP:127.0.0.1 i opció --restart; documentat al runbook i README de Dex.

Commits

Finestra del dia (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

Comprovacions de tancament

  • SAN del cert IDM inclou opencloud - PASS.
  • Dex LDAP host: opencloud:9235 - PASS.
  • curl amb connector_id=ldap/dex/auth/ldap - PASS.
  • Contrasenya incorrecta → HTTP 401, bind LDAP, sense x509 als logs - PASS.
  • Fum connector Google - PASS.
  • Login manual dos usuaris diferents → /files - NO VERIFICAT (operador).

Desplegament

Verificació (operador)

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

Manual: finestra privada → login.html → login local amb dos uid diferents d'OpenCloud; s'espera /oidc-callback.html i després /files sense errors JWKS ni /graph/v1.0/me 500.

Les contrasenyes d'usuaris i secrets de bind IDM no formen part d'aquesta entrada; el happy-path amb dos comptes reals queda com a verificació humana a producció.

Següent pas

Dia 5

El dia 5 no documenta desplegaments: recull una reunió de visió a Masnou sobre per què creiem que avui ja es pot oferir tecnologia útil sense passar per les grans corporacions digitals. Mentrestant, explora els serveis o el relat del dia 5.