Comment gérer le SSO de Discourse lorsque le site d'authentification permet aux utilisateurs de modifier leurs adresses e-mail ?

Nous utilisons un flux SSO Discourse que nous avons mis en œuvre en nous basant sur ce guide : Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

Cela a bien fonctionné pour nous jusqu’à présent. Mais maintenant, nous souhaitons permettre aux utilisateurs de notre système de modifier leur adresse e-mail, et cela semble entraîner des problèmes.

Lorsque je modifie l’e-mail de mon utilisateur dans notre système, la connexion SSO vers Discourse cesse de fonctionner.

Erreur de connexion

Un problème est survenu avec votre compte. Veuillez contacter l’administrateur du site.

Je suppose que Discourse reçoit une charge utile contenant une adresse e-mail et un nom d’utilisateur qui ne correspondent pas et ne sait pas comment réagir.

Quelle est la meilleure façon de gérer cela ?

La meilleure idée à laquelle j’ai pensé consiste à utiliser l’API Discourse pour modifier l’e-mail de l’utilisateur dans Discourse afin qu’il corresponde à celui de notre système avant d’initier le SSO.

Mais je ne sais pas si cela est possible. Voici ma tentative infructueuse.

Voici ma requête :

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

En-têtes :
Content-Type: application/x-www-form-urlencoded
Accept: application/json

Corps (en tant que x-www-form-urlencoded dans Postman) :
email: testemail@testdomain.com
api_key: 75a...77d
api_username: system

Et voici la réponse que je reçois :

{
    "errors": [
        "Vous n'êtes pas autorisé à consulter la ressource demandée."
    ],
    "error_type": "invalid_access"
}

Je rencontre le même problème. As-tu trouvé une solution ?

Ce ne devrait pas être le cas, car nous nous basons principalement sur l’identifiant SSO.

Vous pouvez utiliser le point de terminaison de synchronisation SSO pour synchroniser les e-mails côté Discourse si vous le souhaitez de manière proactive, mais la modification des e-mails dans votre système devrait toujours fonctionner.

La seule exception est la suivante :

Discourse considère que l’identifiant SSO est 5 et l’e-mail est bob@jane.com

Vous vous connectez avec l’identifiant SSO 6 et l’e-mail est bob@jane.com

Ceci est impossible à résoudre, vous devrez donc intervenir manuellement (synchronisez d’abord l’identifiant SSO 6).