es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Federación de usuarios personalizada en Keycloak con atributos de usuario

He implementado un proveedor de almacenamiento de usuarios personalizado con AbstractUserAdapter para Keycloak para recuperar usuarios de una base de datos externa e iniciar sesión con las credenciales almacenadas en esa base de datos. Todo funciona correctamente y los datos se leen solo a través del panel de administración de Keycloak.

Quería agregar atributos adicionales a los usuarios a partir de datos almacenados en una base de datos externa, y me gustaría agregar estos datos al token a través de un mapeador de atributos. ¿Existe alguna manera de hacerlo? ¿O necesito implementar AbstractUserAdapterFederatedStorage? El problema con este último es que no es de solo lectura y permite editar los datos de usuario transferidos al almacenamiento de usuarios de Keycloak.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar atributos adicionales a los usuarios a partir de los datos almacenados en una base de datos externa, es posible utilizar un Mapeador de Atributos en Keycloak. Esto se puede lograr sin implementar AbstractUserAdapterFederatedStorage, que está destinado a ser utilizado en escenarios donde se necesita escribir datos de vuelta en el almacenamiento externo de usuarios.

    El mapeador de atributos funciona aplicando una transformación a los atributos del usuario a medida que son devueltos por el Proveedor de Identidad. En este caso, la base de datos que contiene los atributos adicionales deseados sería el Proveedor de Identidad.

    Suponiendo que la base de datos externa que contiene los datos adicionales del usuario ya está definida como un Proveedor de Almacenamiento de Usuarios, puedes crear un Mapeador de Atributos personalizado para recuperar los datos y agregarlos al token del usuario.

    Para implementar un Mapeador de Atributos, necesitarías extender la clase AbstractUserAttributeMapper y sobrescribir el método setAttribute. Este método debería recuperar los datos adicionales de la base de datos externa utilizando los detalles de conexión apropiados y agregar el atributo al token. Una vez que el Mapeador de Atributos esté implementado, puedes añadirlo a un Proveedor de Identidad existente o nuevo en Keycloak a través de la Consola de Administración.

    En general, el enfoque del Mapeador de Atributos es preferible a la opción de AbstractUserAdapterFederatedStorage, ya que permite el acceso de solo lectura a la fuente de datos externa y evita la posibilidad de cambios inadvertidos en los datos.

Comments are closed.