Soporte a Keycloak como Identity Manager Avanzado

Disponible desde versión 2.3.0-immortal

Introducción

En Q4 vamos a incorporar Keycloak como Identity Manager avanzado, para aquellos escenarios en los que se necesite una configuración más avanzada y personalizada: múltiples repositorios de usuarios y proveedores de autenticación (user federation), integración con otros IM (identity brokering), personalización del flujo de autenticación y sesiones…

A continuación se va a detallar cómo se ha enfocado la integración con este IM Open Source. No obstante, esto es una primera aproximación, y como todo lo que se integra en plataforma, está sujeto a cambios según vayamos recogiendo feedback de los productos y proyectos.

Glosario Keycloak

A continuación se describen términos usados dentro de Keycloak:

  • Consola de Administrador: Interfaz gráfica de usuario basada en la web en la que puedes "pinchar" todas las configuraciones que requiera tu instancia para que funcione como desees.

  • Usuarios: Entidades que pueden iniciar sesión en el sistema protegido. Tienen un conjunto de atributos editables y pueden formar parte de un grupo y/o tener roles específicos asignados.

  • Rol: Tipo o categoría de usuario que existe en una organización. Las aplicaciones suelen basarse en los roles para restringir el acceso a los recursos.

  • Grupos: Entidades que se utilizan para gestionar un conjunto de usuarios. Al igual que los usuarios, los grupos tienen atributos editables y también se pueden asignar roles a un grupo. Los usuarios que se convierten en miembros de un grupo heredan sus atributos y roles.

  • Realm: Un realm (“reino”) gestiona un conjunto de usuarios, credenciales, roles y grupos. Un usuario pertenece a un realm y se registra en él. Los realms están aislados unos de otros y sólo pueden gestionar y autenticar a los usuarios que controlan.

  • Cliente: Entidades que pueden solicitar a Keycloak la autenticación de un usuario. La mayoría de las veces, los clientes son aplicaciones y servicios que quieren utilizar Keycloak por seguridad, para autenticarse. Los clientes también pueden ser entidades que desean solicitar información de identidad o un token de acceso para poder invocar de forma segura otros servicios protegidos por Keycloak.

  • Token de identidad: Un token que proporciona información de identidad sobre el usuario. Forma parte de la especificación OpenID Connect.

  • Token de acceso: Un token que puede ser proporcionado como parte de una solicitud HTTP.

Keycloak Realms

Los Realms de Keycloak se van a corresponder con los verticales de la plataforma, para que en un entorno Multitenant, cada cliente tenga su propio Realm de Keycloak, que en definitiva es una instancia independiente. Dicho Realm podrán configurarlo en base a sus necesidades sin que afecte al resto. Cada Realm tendrá sus propias URLs, providers, clients…

Keycloak Clients

Los clientes de Keycloak se corresponderán con el concepto de realm de plataforma, de tal forma que los realms que se den de alta en plataforma, estarán accesibles para la autenticación via Keycloak, con los mismos roles, usuarios y client secret. En un entorno Multitenant, cada vertical tendrá únicamente los clientes que les corresponden.

Providers

El provider por defecto que vendrá configurado en las instalaciones con este IM será el nuestro propio, el de los usuarios existentes en la base de datos de configuración (ConfigDB). No obstante, se podrán añadir los “built-in” como LDAP y Kerberos, e incluso desarrollos propios externos.

Configuración avanzada

Además de la integración que ofrecemos con plataforma, es posible configurar y extender Keycloak mediante los mecanismos que se explican en la documentación de la herramienta: https://www.keycloak.org/documentation