Keycloak: Gestión de Identidades y Accesos

Keycloak

Keycloak es un sistema de gestión de identidades y accesos (IAM) de código abierto, diseñado para aplicaciones modernas. Permite a los desarrolladores integrar capacidades avanzadas de autenticación y autorización sin necesidad de desarrollar estas funciones desde cero. Con Keycloak, los usuarios pueden iniciar sesión en sus aplicaciones utilizando credenciales de múltiples proveedores de identidad, como Google, Facebook o GitHub, o mediante el uso de protocolos estándar como OpenID Connect, OAuth 2.0 y SAML 2.0.

¿Qué características definen Keycloak?

  1. Autenticación y autorización centralizadas: Keycloak permite gestionar todos los usuarios y roles desde una única interfaz, facilitando el control sobre quién puede acceder a qué servicios. Además, soporta autenticación multifactor (MFA) para añadir una capa adicional de seguridad.
  2. Inicio de sesión único (SSO): Con Keycloak, los usuarios pueden acceder a múltiples aplicaciones con una sola autenticación. Esto no solo mejora la experiencia del usuario, sino que también reduce la carga administrativa para los equipos de TI.
  3. Federación de identidad: Keycloak permite integrar distintos proveedores de identidad, permitiendo que los usuarios utilicen sus credenciales de servicios como LDAP, Active Directory o incluso redes sociales para acceder a las aplicaciones.
  4. Personalización y extensibilidad: La interfaz de usuario de Keycloak es altamente personalizable, permitiendo a las empresas adaptar la experiencia de inicio de sesión a su imagen corporativa. Además, cuenta con una arquitectura extensible que facilita la incorporación de nuevas funcionalidades a través de la API.

Conceptos clave de Keycloak

  • Realm: “Universo” de usuarios, clientes y roles. Cada realm es independiente. (Ej.: ciudadano-digital).
  • Client: La aplicación que confía en Keycloak para autenticar. Puede ser una SPA, backend, API, etc.
  • Users / Groups / Roles: Identidades y permisos. Roles pueden ser de cliente o de realm.
  • Identity Provider (IdP) externo: Keycloak puede delegar login a Google, LDAP, Active Directory, Mi Argentina, etc.
  • Flows de autenticación: Pipelines personalizables (2FA, captcha, aceptar términos, etc.).
  • Mappers: Transforman/inyectan claims en el token (username, email, roles, atributos personalizados).
  • Authorization Services: Control de acceso fino (RBAC/ABAC) con políticas, permisos y recursos.

Flujo básico de implementación

Elegir cómo desplegar Keycloak

  • Docker/Podman (rápido para dev).
  • Kubernetes/OpenShift (producción escalable).
  • Binario nativo (Quarkus) en un VM/servidor.

Configurar el realm

  • Crear realm (ej. “ciudadano-digital”).
  • Definir políticas de password, 2FA, emails.

Registrar aplicaciones (clients)

  • Tipo: public (SPA/móvil) o confidential (backends).
  • Configurar URIs de redirección, flujos OIDC (Authorization Code + PKCE, estándar para web/móvil).

Roles y grupos

  • Definir roles globales (ej. “empleado”, “socio”) y roles específicos de cada app.

Mappers

  • Añadir datos que tu app necesita en el token (DNI, cuil, permisos específicos).

Integrar tus apps

  • Usar librerías OIDC/SAML del lenguaje (PHP, Node.js, Java, etc.).
  • Proteger endpoints, validar tokens en APIs.

(Opcional) Identity brokering / Federation

  • Conectar Keycloak a LDAP/AD o a otro IdP OIDC/SAML.

Automatizar configuración

  • Exportar/importar realm JSON.
  • Usar el Keycloak Operator en Kubernetes.

Contextos de uso comunes

ContextoProblema a resolverCómo ayuda KeycloakCaracterísticas usadas
Portal “Ciudadano Digital” (Gobierno)Un solo login para múltiples sistemas estatalesSSO con OIDC/SAML, centralización de usuarios y políticasRealms, Clients múltiples, Identity brokering con Mi Argentina/RENAPER, mappers de DNI
Intranet/SSO corporativoMúltiples apps internas (Jira, GitLab, ERP) con un único loginIntegración SAML/OIDC, MFAConectores con LDAP/AD, roles por departamento
Microservicios y APIsAutorización distribuida, tokens JWT para serviciosResource servers validando JWTKeycloak Authorization Services, políticas por recurso
B2C / SaaS multi-tenantUsuarios finales, branding por clienteMulti-realm o realm por cliente, temas customTheming, realm templates, SMTP per realm
Apps móvilesLogin estándar + refresh tokensOIDC con PKCE, token refresh seguroClients “public” y reglas de CORS
Federación de usuariosReutilizar AD/LDAP exist.User FederationSincronización de atributos, mappers
Auditoría/seguridadQuién se logueó, desde dónde, cuándoLogs centralizadosEventos, admin API
Comentarios
advertise width me