3 puntos por GN⁺ 2024-02-12 | 1 comentarios | Compartir por WhatsApp

Configuración de SSO con Keycloak: uso de Docker Compose y Nginx

  • Keycloak es una solución de gestión de identidad y acceso de código abierto, confiable y compatible con los principales protocolos de SSO.
  • La configuración con Docker Compose no es compleja, pero no es intuitiva, por lo que se ofrece un resumen del proceso de configuración.

Conceptos

  • Se usa una configuración estándar en la que Nginx funciona como proxy inverso central para dirigir el tráfico a servicios individuales a través de localhost.
  • Se considera una configuración económica que comparte los recursos de un solo host mientras aísla al máximo cada entorno.

Requisitos previos

  • Se necesitan herramientas básicas (SSH, una VM con Linux instalada, y un dominio o subdominio).
  • Para configurar Docker rootless, se crea un nuevo usuario sin privilegios llamado keycloak con acceso sin contraseña, se actualizan los rangos de /etc/subuid y /etc/subgid, se instala Docker rootless y se configura el inicio automático del servicio.

Configuración de Keycloak

  • Se inicia sesión con el usuario keycloak recién creado y se crean directorios para los datos persistentes y los archivos de Docker.
  • Siguiendo la documentación oficial, se escribe docker-compose.yml y se coloca la información sensible y variable en el archivo .env.

Pruebas en local

  • Se prueba el stack de Docker Compose, se crea un túnel SSH inverso hacia la VM y luego se verifica en el navegador la pantalla de bienvenida de Keycloak.

Configuración de Nginx

  • Se configura Nginx como proxy inverso del sistema y se crea un nuevo archivo .conf de Nginx para el servicio de Keycloak.
  • En el registrador del dominio, se agrega un registro A para dirigir las consultas DNS a la IP de la VM.

Depuración

  • Se abre .tld.com, se inicia sesión en Keycloak con el usuario admin y se revisan los logs de Docker Compose, así como los logs de acceso y error de Nginx.
  • Si hace falta, también se revisa la base de datos de Keycloak.

Build personalizado con Dockerfile

  • En lugar de usar la imagen preconstruida de quay.io, se construye una imagen propia con Dockerfile.
  • Se reinicia Docker Compose para construir la imagen y arrancar el servicio.

Conclusión

  • El servicio de Keycloak está corriendo detrás de un proxy inverso Nginx del sistema usando Docker rootless.
  • Los siguientes pasos incluyen actualizaciones automáticas de los contenedores Docker, agregar inicio de sesión y correo electrónico al servicio de Keycloak, añadir realms y agregar temas.

Opinión de GN⁺:

  • Importancia de la seguridad: el estado actual de la web hace difícil mantenerse al día con las vulnerabilidades relacionadas con la seguridad, por lo que es importante usar una solución confiable como Keycloak.
  • Arquitectura eficiente: compartir recursos en un solo host mientras se aíslan los entornos es una forma rentable y fácil de administrar.
  • Capacidad de personalización: un build personalizado con Dockerfile ofrece flexibilidad para adaptar Keycloak a necesidades propias.

1 comentarios

 
GN⁺ 2024-02-12
Comentarios de Hacker News
  • Opinión de un usuario que eligió Authelia:

    • Keycloak tiene muchas funciones, pero su configuración es compleja y requiere servicios adicionales.
    • Authelia no tiene interfaz de usuario y no permite sincronización bidireccional con un servidor LDAP, pero puede configurarse con archivos estáticos y variables de entorno, por lo que es adecuado en muchos casos.
    • Si necesitas autenticación simple y SSO, recomienda empezar con Authelia.
  • Opinión de un usuario con experiencia usando JetBrains Hub y Keycloak, que eligió Dex:

    • JetBrains Hub es muy fácil de configurar, aunque resulta incómodo que la imagen de Docker no tenga una etiqueta latest.
    • Keycloak es fácil en modo de desarrollo, pero difícil de configurar en un entorno real de producción.
    • Al final eligió Dex, aunque su documentación es escasa, porque su configuración es simple.
    • Simplificó la configuración de SSO combinando OAuth2 Proxy con plantillas de Nginx.
    • Agregó Cloudflare Access y WAF por seguridad.
  • Opinión de un usuario que creó una tabla comparativa de servidores OpenID Connect:

    • Le sorprendió el tamaño del codebase de Keycloak.
  • Opinión de un usuario sobre los problemas de seguridad de Keycloak:

    • Al ver los CVE (vulnerabilidades públicas) de Keycloak, le preocupa su seguridad.
  • Opinión de un usuario que compartió su experiencia implementando Keycloak en AWS ECS:

    • Keycloak ha pasado por muchos cambios durante mucho tiempo.
    • Tuvo dificultades con el clustering, especialmente con el descubrimiento por DNS y el descubrimiento de clúster vía UDP.
    • Los inicios de sesión con estado no coincidían entre servidores, lo que complicaba el balanceo de carga.
  • Opinión de un usuario que hizo una mención positiva de Keycloakify:

    • Keycloakify parece una excelente alternativa para Keycloak.
  • Opinión de un usuario que comparó Authelia y Keycloak:

    • Authelia parece atractivo, pero Keycloak ofrece un conector para Angular que facilita empezar.
  • Opinión de un usuario que compartió su experiencia usando Keycloak:

    • Keycloak tiene una configuración compleja y poca documentación, pero puede desplegarse y administrarse fácilmente con Terraform.
  • Opinión de un usuario que probó Zitadel:

    • Keycloak puede resultar confuso para principiantes, y Zitadel es más fácil de usar.
  • Opinión de un usuario que expresó las dificultades de usar Keycloak:

    • Keycloak no proporciona directamente enlaces para restablecer contraseña y hay que gestionarlos mediante la API.
    • La configuración de clúster no es sencilla y existen limitaciones con los realms.
    • Construir directamente un sistema de inicio de sesión seguro puede ser riesgoso o difícil.