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"
}
1 « J'aime »

I’m experiencing this too - did you ever figure out a way around this?

This should not be the case, we primarily key on the SSO id.

You can use the sync sso endpoint to sync the emails on Discourse side if you want to do so proactively but changing emails in your system should always work.

The one exception is

Discourse thinks SSO id is 5 email is bob@jane.com

You log in with SSO id of 6 email is bob@jane.com

This is not resolvable so you will need to manually intervene. (sync sso id 6 first)

1 « J'aime »