Como lidar com o SSO do Discourse quando o site de autenticação permite que os usuários alterem e-mails?

Utilizamos um fluxo SSO do Discourse que implementamos com base neste guia: Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

Funcionou bem para nós. Mas agora queremos permitir que os usuários do nosso sistema alterem seu e-mail, e isso parece estar causando problemas.

Quando altero o e-mail do meu usuário no nosso sistema, o SSO para o Discurso deixa de funcionar.

Erro de Login

Há um problema com sua conta. Entre em contato com o administrador do site.

Acho que o Discourse recebe um payload com um e-mail e um nome de usuário que não correspondem e não sabe o que fazer.

Qual é a melhor maneira de lidar com isso?

A melhor ideia que tive é usar a API do Discourse para alterar o e-mail do usuário no Discourse para corresponder ao do nosso sistema antes de iniciar o SSO.

Mas não sei se isso é possível. Abaixo está minha tentativa falha.

Aqui está minha solicitação:

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

Cabeçalhos:
Content-Type: application/x-www-form-urlencoded
Accept: application/json

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

E aqui está a resposta que recebo:

{
    "errors": [
        "Você não tem permissão para visualizar o recurso solicitado."
    ],
    "error_type": "invalid_access"
}

Estou enfrentando isso também - você conseguiu descobrir uma solução?

Isso não deveria acontecer, pois priorizamos o ID do SSO.

Você pode usar o endpoint de sincronização do SSO para sincronizar os e-mails no lado do Discourse, se desejar fazer isso proativamente, mas a alteração de e-mails no seu sistema deve sempre funcionar.

A única exceção ocorre quando:

O Discourse considera que o ID do SSO é 5 e o e-mail é bob@jane.com

Você faz login com o ID do SSO 6 e o e-mail é bob@jane.com

Isso não é resolvível, então você precisará intervir manualmente (sincronize primeiro o ID do SSO 6).