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.
Contenidos
¿Qué características definen Keycloak?
- 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.
- 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.
- 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.
- 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
Contexto | Problema a resolver | Cómo ayuda Keycloak | Características usadas |
---|---|---|---|
Portal “Ciudadano Digital” (Gobierno) | Un solo login para múltiples sistemas estatales | SSO con OIDC/SAML, centralización de usuarios y políticas | Realms, Clients múltiples, Identity brokering con Mi Argentina/RENAPER, mappers de DNI |
Intranet/SSO corporativo | Múltiples apps internas (Jira, GitLab, ERP) con un único login | Integración SAML/OIDC, MFA | Conectores con LDAP/AD, roles por departamento |
Microservicios y APIs | Autorización distribuida, tokens JWT para servicios | Resource servers validando JWT | Keycloak Authorization Services, políticas por recurso |
B2C / SaaS multi-tenant | Usuarios finales, branding por cliente | Multi-realm o realm por cliente, temas custom | Theming, realm templates, SMTP per realm |
Apps móviles | Login estándar + refresh tokens | OIDC con PKCE, token refresh seguro | Clients “public” y reglas de CORS |
Federación de usuarios | Reutilizar AD/LDAP exist. | User Federation | Sincronización de atributos, mappers |
Auditoría/seguridad | Quién se logueó, desde dónde, cuándo | Logs centralizados | Eventos, admin API |
Comentarios