So gehen Sie mit Discourse SSO um, wenn die Authentifizierungsseite Benutzern das Ändern von E-Mail-Adressen erlaubt

Wir verwenden einen Discourse-SSO-Flow, den wir basierend auf diesem Leitfaden implementiert haben: Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

Das hat bei uns gut funktioniert. Jetzt möchten wir jedoch Benutzern in unserem System erlauben, ihre E-Mail-Adresse zu ändern, und dies scheint zu Problemen zu führen.

Wenn ich die E-Mail-Adresse meines Benutzers in unserem System ändere, funktioniert die SSO-Verbindung zu Discourse nicht mehr.

Login-Fehler

Es liegt ein Problem mit Ihrem Konto vor. Bitte kontaktieren Sie den Administrator der Seite.

Ich vermute, dass Discourse eine Nutzlast erhält, bei der E-Mail und Benutzername nicht übereinstimmen, und nicht weiß, wie es damit umgehen soll.

Was ist ein guter Weg, um damit umzugehen?

Die beste Idee, die ich bisher hatte, besteht darin, die Discourse-API zu verwenden, um die E-Mail-Adresse des Benutzers in Discourse vor Initiierung der SSO an die in unserem System anzupassen.

Ich weiß jedoch nicht, ob das möglich ist. Unten ist mein gescheiterter Versuch dargestellt.

Hier ist meine Anfrage:

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

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

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

Und hier ist die Antwort, die ich erhalte:

{
    "errors": [
        "Sie sind nicht berechtigt, die angeforderte Ressource anzuzeigen."
    ],
    "error_type": "invalid_access"
}
1 „Gefällt mir“

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 „Gefällt mir“