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.

Keycloak escucha de eventos personalizados SPI: los detalles del evento UPDATE_PROFILE devuelven null para los cambios en los atributos personalizados.

Estoy trabajando en un SPI de Event Listener personalizado para Keycloak. El event listener funciona; sin embargo, tengo problemas para obtener los detalles del tipo de evento UPDATE_PROFILE. Al utilizar event.getDetails(), que debería devolver un Mapa con los detalles del evento, en cambio devuelve null.

Estoy intentando obtener los detalles de qué campos fueron actualizados por el usuario, sus valores antiguos y sus valores nuevos con fines de auditoría.

El código que tengo actualmente para intentar registrar los detalles del evento es el siguiente:

logger.info("Se obtuvo un evento del tipo: {}", event.getType());
logger.info("Detalles del evento:");
if (event.getDetails() != null) {
   for (String key : event.getDetails().keySet()) {
      logger.info("Clave: {}, Valor: {}", key, event.getDetails().get(key));
   }
}

En el código anterior, después de actualizar el perfil, los registros muestran esto:
Salida de registro del event listener de Keycloak

EDIT:
Solo registra cambios en los campos que existen en el tema base de Keycloak (correo electrónico, nombre y apellido). Cuando se realiza algún cambio en cualquiera de los campos personalizados que agregamos a nuestro tema personalizado, los detalles del evento son null y no se registra nada.

Cualquier ayuda es muy apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con los campos personalizados agregados al tema. ¿Has verificado si esos campos tienen las configuraciones correctas establecidas? Verificar nuevamente las configuraciones de los campos personalizados y asegurarse de que estén configurados correctamente para activar el evento de ACTUALIZACIÓN_PERFIL puede resolver el problema.

    Además, puede ser útil depurar el código comprobando si se activa el evento de ACTUALIZACIÓN_PERFIL cuando se actualizan los campos personalizados. Puedes establecer puntos de interrupción y utilizar un depurador para ver qué valores se devuelven y si se producen errores.

    Por último, puedes intentar recuperar el perfil de usuario actualizado directamente desde la API de usuario de Keycloak para obtener los valores de los campos actualizados en lugar de depender únicamente de los detalles del evento. Esto implicaría llamar a la API de usuario dentro del listener del evento para recuperar el perfil de usuario actualizado y registrar los cambios.

Comments are closed.