Cómo manejar el SSO de Discourse cuando el sitio de autenticación permite a los usuarios cambiar correos electrónicos

Utilizamos un flujo de SSO de Discourse que hemos implementado basándonos en esta guía: Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

Nos ha funcionado bien. Pero ahora queremos permitir que los usuarios en nuestro sistema cambien su correo electrónico, y esto parece generar problemas.

Cuando cambio el correo electrónico de mi usuario en nuestro sistema, el SSO a Discourse deja de funcionar.

Error de inicio de sesión

Hay un problema con su cuenta. Póngase en contacto con el administrador del sitio.

Supongo que Discourse recibe una carga útil con un correo electrónico y un nombre de usuario que no coinciden y no sabe qué hacer.

¿Cuál es una buena manera de manejar esto?

La mejor idea que se me ha ocurrido es utilizar la API de Discourse para cambiar el correo electrónico del usuario en Discourse para que coincida con el de nuestro sistema antes de iniciar el SSO.

Pero no sé si esto es posible. A continuación, mi intento fallido.

Aquí está mi solicitud:

https://forum-stage.{domain}.com/users/{username}/preferences/email

Encabezados:
Content-Type: application/x-www-form-urlencoded
Accept: application/json

Cuerpo (como x-www-form-urlencoded en Postman):
email: testemail@testdomain.com
api_key: 75a...77d
api_username: system

Y aquí está la respuesta que recibo

{
    "errors": [
        "No tiene permiso para ver el recurso solicitado."
    ],
    "error_type": "invalid_access"
}

Yo también estoy experimentando esto. ¿Lograste encontrar una solución?

Este no debería ser el caso, ya que nos basamos principalmente en el ID de SSO.

Puedes usar el endpoint de sincronización de SSO para sincronizar los correos electrónicos en el lado de Discourse si lo deseas de forma proactiva, pero cambiar los correos electrónicos en tu sistema siempre debería funcionar.

La única excepción es:

Discourse piensa que el ID de SSO es 5 y el correo es bob@jane.com.

Te inicias sesión con un ID de SSO de 6 y el correo es bob@jane.com.

Esto no se puede resolver, por lo que necesitarás intervenir manualmente (sincroniza primero el ID de SSO 6).