Come gestire l'SSO di Discourse quando il sito di autenticazione permette agli utenti di cambiare l'email?

Utilizziamo un flusso SSO di Discourse che abbiamo implementato seguendo questa guida: Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

Finora ha funzionato bene per noi. Tuttavia, ora vogliamo permettere agli utenti del nostro sistema di modificare il proprio indirizzo e-mail e questo sembra causare problemi.

Quando modifico l’e-mail del mio utente nel nostro sistema, l’SSO verso Discourse smette di funzionare.

Errore di accesso

C’è un problema con il tuo account. Contatta l’amministratore del sito.

Immagino che Discourse riceva un payload con un’e-mail e un nome utente che non corrispondono e non sappia come gestire la situazione.

Qual è il modo migliore per gestire questo caso?

L’idea migliore che mi è venuta in mente è utilizzare l’API di Discourse per modificare l’e-mail dell’utente in Discourse, allineandola a quella del nostro sistema, prima di avviare l’SSO.

Ma non so se sia possibile. Di seguito il mio tentativo fallito.

Ecco la mia richiesta:

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

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

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

Ecco la risposta che ho ricevuto:

{
    "errors": [
        "Non sei autorizzato a visualizzare la risorsa richiesta."
    ],
    "error_type": "invalid_access"
}
1 Mi Piace

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 Mi Piace