Discourse-Konten über SSO erstellen, ohne die Forum-URL aufzurufen?

Ich administriere ein Forum, das SSO verwendet, um Benutzername- und Passwort-Anmeldedaten an unsere Discourse-Instanz weiterzuleiten.

Derzeit müssen Sie sich auf meiner Hauptwebsite anmelden und dann zum Forum klicken, damit die Weiterleitung der Anmeldedaten erfolgt und ein Forumskonto erstellt wird.

Meine Entwickler arbeiten daran, unsere veraltete API-Methode zu aktualisieren und an die aktuelle Spezifikation von Discourse anzupassen. Mein Entwickler hat mir mitgeteilt, dass es möglich ist, dass SSO ein Discourse-Konto erstellt, ohne dass der Benutzer aktiv auf unser Forum klicken muss.

Hat jemand von euch seine API so eingerichtet? Ich bin skeptisch, ob eine automatische Synchronisierung standardmäßig aktiviert sein sollte. Was sind die Vor- und Nachteile?

Ja, unser WordPress-Plugin bietet eine Option, die Ähnliches ermöglicht. Die Funktionsweise ist folgende: Wenn ein Nutzer ein WordPress-Konto erstellt oder sich auf der WordPress-Seite anmeldet, wird ein Aufruf an die Discourse-Route /admin/users/sync_sso gesendet. Existiert der Nutzer noch nicht in Discourse, wird ein Discourse-Benutzer erstellt. Existiert der Nutzer bereits in Discourse, kann dieser Aufruf verwendet werden, um Details über den Nutzer zu aktualisieren, die sich auf der SSO-Anbieterseite geändert haben. Beispielsweise können damit der Name, der Benutzername oder die E-Mail-Adresse eines Nutzers aktualisiert werden. Zudem kann der Nutzer damit Discourse-Gruppen hinzugefügt oder daraus entfernt werden.

Für einen allgemeinen Überblick über die Route sync_sso schauen Sie bitte hier vorbei: Sync DiscourseConnect user data with the sync_sso route. Wenn Ihre Entwickler ein funktionierendes Beispiel in PHP sehen möchten, werfen Sie einen Blick auf diese Datei aus unserem WordPress-Plugin: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. Die wichtigste Funktion in dieser Datei ist die sync_sso-Funktion.

Der einzige Nachteil, der mir bekannt ist, besteht darin, dass dies die SSO-Codebasis etwas komplexer macht. Wie es im WordPress-Plugin implementiert ist, wird zudem bei jeder Anmeldung eines Nutzers auf der SSO-Anbieterseite ein API-Aufruf an Discourse getätigt. Das liegt daran, dass es an das WordPress-Anmeldeereignis gekoppelt ist. Mir ist nicht bekannt, dass dieser API-Aufruf bei irgendwelchen Seiten zu Rate-Limit-Problemen führt, aber es wäre möglich, den Aufruf nur bei der Erstellung eines neuen Kontos vorzunehmen, falls dies ein Problem darstellen sollte.

Der Vorteil dieses Ansatzes besteht darin, dass Sie Details über Ihre Nutzer aktualisieren können, ohne dass diese sich über SSO bei Discourse anmelden müssen. Beispielsweise könnten Sie Nutzer einer Discourse-Gruppe hinzufügen, wenn sie eine Aktion auf Ihrer Website ausführen.

Ein weiterer Ansatz zur Integration einer Website mit Discourse über SSO besteht darin, SSO-Login-Links auf Ihrer Website zu verwenden. Dies ermöglicht es Ihnen, Ihren Discourse-Forum auf Ihrer Website einzubetten, der Nutzer bei Discourse anmeldet und sie zu einer bestimmten Seite weiterleitet. Dieses Thema enthält Details zur Einrichtung: Erstellen eines SSO-Login-Links.