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"
}

Ich habe das Problem auch - hast du mittlerweile eine Lösung dafür gefunden?

Das sollte nicht der Fall sein, da wir uns primär auf die SSO-ID stützen.

Sie können den SSO-Sync-Endpunkt verwenden, um die E-Mail-Adressen auf der Discourse-Seite proaktiv zu synchronisieren, falls gewünscht. Änderungen der E-Mail-Adressen in Ihrem System sollten jedoch immer funktionieren.

Die einzige Ausnahme ist:

Discourse geht davon aus, dass die SSO-ID 5 ist und die E-Mail bob@jane.com lautet.

Sie melden sich mit der SSO-ID 6 an, und die E-Mail lautet bob@jane.com.

Dies lässt sich nicht automatisch auflösen, sodass Sie manuell eingreifen müssen (zuerst die SSO-ID 6 synchronisieren).