En esta página
Día 4 - Login local Dex LDAP contra IDM OpenCloud
Conector LDAP de Dex hacia el IDM integrado de OpenCloud, corrección TLS del certificado LDAPS y cierre de la issue #1 con pruebas automatizadas.
Introducción
El día 4 (ventana de las últimas cuatro horas del 27 de mayo de 2026, ~11:40–15:40 CEST en el VPS Debian de producción) se centra en un único objetivo de autenticación: que el login local acepte cualquier usuario del IDM integrado de OpenCloud (mismo uid y contraseña que en Ajustes) y siga emitiendo tokens OIDC de Dex para el proxy.
Se sustituye el almacén estático de contraseñas de Dex por un conector LDAP hacia LDAPS del IDM, se corrige el certificado TLS del servicio LDAP interno y el bucle autoagents cierra la issue #1 de GitHub con pruebas automatizadas en PASS.
Resumen
Resultado del día
- Dex ↔ IDM: conector
ldap→ldaps://opencloud:9235, baseou=users,o=libregraph-idm; Dex en red Dockeropencloud_opencloud-netcon volúmenes de config/datos para CAidm/ldap.crt. - OpenCloud:
IDM_LDAPS_ADDR=0.0.0.0:9235en overlay external-proxy;login.htmlusaconnector_id=ldap; nginx y JSON de auth alineados concloud.km0digital.com. - TLS IDM: certificado regenerado con SAN
DNS:opencloud(antes sólolocalhost); scriptregenerate-opencloud-idm-ldap-cert.sh. - Autoagents: tarea cerrada PASS; versión del paquete 1.0.18; login manual con dos usuarios distintos pendiente de operador.
Problema
GitHub #1
El flujo híbrido ya enrutaba Google/Apple y login local por Dex, pero el conector local dependía de un password store estático en Dex: sólo funcionaba para credenciales predefinidas, no para todos los usuarios inetOrgPerson creados en el IDM de OpenCloud.
El requisito era unificar credenciales con Ajustes de OpenCloud y mantener el emisor OIDC (OC_OIDC_ISSUER) que consume el proxy.
Solución
Integración Dex LDAP + IDM
- Dex: conector
type: ldapendex/config.yaml; eliminado el password DB para usuarios locales. - Compose Dex: unión a
opencloud_opencloud-net; montaje de volúmenesopencloud-configyopencloud-datapara leer CA yidm_passworddel config montado. - Overlay OpenCloud:
IDM_LDAPS_ADDR=0.0.0.0:9235para que Dex alcance LDAPS por hostnameopencloud. - UI:
login.htmlcon botón «local» yconnector_id=ldap; rutas nginx/dex/authsin conector → selector de login.
Flujo
Login tras los cambios
login.html
├── Google → Dex connector google → token OIDC → proxy OpenCloud
├── Apple → Dex connector apple → (cuando esté configurado)
└── Local → Dex connector ldap → IDM LDAPS opencloud:9235
(cualquier uid inetOrgPerson + contraseña)Los conectores sociales siguen el mismo patrón OIDC; el local deja de ser una lista fija en Dex y pasa a ser un bind LDAP contra el directorio embebido del stack.
Collabora
Coedición tras login unificado
La integración Collabora documentada en el día 3 habilita la edición Office en navegador para todos los usuarios autenticados. Con el conector Dex LDAP del día 4, cualquier usuario del IDM (mismo uid y contraseña que en Ajustes) puede iniciar sesión y abrir hojas de cálculo o presentaciones compartidas; varias personas pueden editar el mismo fichero XLSX o PPT a la vez.
TLS
Fix certificado IDM LDAPS
Durante las pruebas, Dex alcanzaba opencloud:9235 pero el ldap.crt autogenerado sólo incluía localhost en el SAN → error TLS certificate is valid for localhost, not opencloud.
Corrección (0a042db): script scripts/regenerate-opencloud-idm-ldap-cert.sh que regenera el certificado con DNS:localhost,DNS:opencloud,IP:127.0.0.1 y opción --restart; documentado en runbook y README de Dex.
Commits
Ventana del día (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
Comprobaciones de cierre
- SAN del cert IDM incluye
opencloud- PASS. - Dex LDAP
host: opencloud:9235- PASS. curlconconnector_id=ldap→/dex/auth/ldap- PASS.- Contraseña incorrecta → HTTP 401, bind LDAP, sin x509 en logs - PASS.
- Humo conector Google - PASS.
- Login manual dos usuarios distintos →
/files- NO VERIFICADO (operador).
Despliegue
Verificación (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
Manual: ventana privada → login.html → login local con dos uid distintos de OpenCloud; se espera /oidc-callback.html y luego /files sin errores JWKS ni /graph/v1.0/me 500.
Siguiente paso
Día 5
El día 5 no documenta despliegues: recoge una reunión de visión en Masnou sobre por qué creemos que hoy ya se puede ofrecer tecnología útil sin pasar por las grandes corporaciones digitales. Mientras tanto, explora los servicios o el relato del día 5.