Usuarios de OIDC no se asocian con usuarios existentes de Discourse

Hola. Estoy intentando configurar Discourse con el plugin Discourse OpenID Connect y Keycloak.

He conseguido que funcione y he podido iniciar sesión en mi instancia de Discourse utilizando mis credenciales de Keycloak, así como asociar una cuenta de Discourse ya existente con la de OIDC. Desafortunadamente, cometí un error al configurar el contenedor de Keycloak y terminé perdiendo su configuración y base de datos.

Desde entonces, he reinstalado Keycloak (¡correctamente esta vez!) y he reconfigurado Discourse para usar el nuevo ID de cliente, pero aunque parece que la integración está funcionando (habilitar los registros en /logs muestra que la autenticación realmente funcionó), ya no puedo asociar cuentas de Discourse con cuentas de OIDC.

Cuando intento iniciar sesión en Discourse, uso OIDC, me recibe la nueva interfaz de usuario de la cuenta y luego hago clic en el enlace para asociar con una cuenta ya existente; inicio sesión, soy redirigido a Discourse, y si cierro sesión y vuelvo a iniciarla, veo la misma interfaz de usuario de la nueva cuenta.

Utilicé el Data Explorer plugin para ver las asociaciones, y mi usuario aparece como NULL; sin embargo, el ID del proveedor coincide con el ID de usuario en Keycloak.

Tengo activada la opción “OpenID Connect allow association change”.

Imagino que Discourse todavía está reteniendo lo que sea que había de mi instalación anterior de Keycloak, y simplemente cambiar el nuevo ID de cliente no es suficiente.

¿Hay algo más que deba revisar y que pueda haber pasado por alto?

Saludos.

¿Estás usando la misma dirección de correo electrónico entre las cuentas? ¿Puedes reproducir este problema con una cuenta nueva que no estuviera asociada previamente con Keycloak?

¡Gracias por la rápida respuesta!

No estaba usando la misma dirección de correo electrónico entre las cuentas, pero la he cambiado en Keycloak para que coincida con la utilizada en Discourse, y sigue siendo la misma. La respuesta en Data Explorer es la misma (“NULL” user).

Intenté crear un usuario nuevo y fresco, y estoy recibiendo un error de “Nombre de usuario, correo electrónico o contraseña no válidos”, a pesar de que el nombre de usuario está perfectamente bien y disponible, el correo electrónico es válido y la contraseña ha sido generada por mi gestor de contraseñas. Esto es muy probablemente no relacionado, pero es otra cosa que necesito averiguar por qué está sucediendo.

Hola,

yo también tengo el mismo problema. Tengo una Nextcloud como proveedor OIDC, pero probablemente eso no sea relevante para el problema.

Puedo iniciar sesión con el login de Nextcloud. Luego, como se describió anteriormente, se me presenta la opción de registrar una nueva cuenta o iniciar sesión con una existente. Sin embargo, no se establece ninguna vinculación con la cuenta existente a través de la dirección de correo electrónico.

Si elijo “Registrar”, se me muestra directamente de nuevo la página de inicio en estado deslogueado y debo volver a iniciar sesión. No se muestra ningún mensaje de error.

Es bastante extraño.

Todo funciona correctamente si me inicio sesión con una cuenta OIDC para la cual no existe una cuenta de Discourse correspondiente. En ese caso, se crea una automáticamente y también se muestra la cuenta vinculada en la configuración del usuario.

Quizás alguien más tenga alguna idea sobre qué estoy haciendo mal, o tal vez resulte que aquí hay un error.

Saludos cordiales,

Mike

Hola a todos,

He podido averiguar por qué no funcionaba la asignación. Si alguien también necesita resolver este problema, aquí tenéis mi solución.

La dirección de correo electrónico enviada no se marca como “verificada” de forma predeterminada. Para lograrlo, en el área de administración, bajo Proveedores de OpenID Connect → Configuración, establecí el valor de “Indicación de verificación de dirección de correo electrónico en el token” en “Establecer en siempre verificado”.