SSO-Login mit Discourse

Ich habe den Artikel über Discourse Connect SSO (Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)) gelesen.

Mein Verständnis davon ist, dass wir Discourse unsere API zur Validierung der Authentifizierung nutzen lassen können und auch einige benutzerdefinierte Parameter senden können. Korrigieren Sie mich, wenn ich falsch liege.

Was wir wollen, ist, dass wir unsere eigene Anmeldeseite verwenden (wenn Benutzer auf “Anmelden” auf discourse.open…com klicken, sollte sich unsere Anmeldeseite “kan.open..com” öffnen). Und sobald die Anmeldung erfolgreich ist, sollte sie zur Discourse-Seite weitergeleitet werden. Wir haben gesehen, dass Websites wie Twitter oder Atlassian dasselbe tun. Können Sie uns bitte weitere Details dazu geben, wie dasselbe erreicht werden kann?

Das ist richtig, wenn mit „unsere API nutzen“ gemeint ist „Wir werden unsere API anpassen, um Discourse Connect zu unterstützen“. Die Details dazu finden Sie in den von Ihnen verlinkten Dokumenten. Wenn Sie möchten, dass alle sofort weitergeleitet werden, anstatt etwas auf Ihrem Forum zu sehen, müssen Sie die Website-Einstellung „Anmeldung erforderlich“ aktivieren.

Hallo Discourse Community,

Ich habe eine Frage zur Einrichtung von Discourse SSO (DiscourseConnect). Gibt es eine Möglichkeit, zusätzliche Parameter in die Anfrage einzufügen, wenn Discourse die DiscourseConnect-URL aufruft? Insbesondere möchte ich Benutzerdaten in der Anfrage an die DiscourseConnect-URL übergeben, wie z. B. ein Benutzertoken oder eine Benutzer-ID, die ich zur Authentifizierung des Benutzers und zum Abschluss des SSO-Anmeldevorgangs verwenden kann.

Die Herausforderung, vor der ich stehe, ist, dass sich Benutzer zweimal anmelden müssen – einmal in meinem Projekt und dann erneut bei Discourse –, wenn sie sich über SSO verbinden. Idealerweise möchte ich den Prozess optimieren, sodass sich Benutzer, die bereits in meinem Projekt angemeldet sind, nicht erneut mit denselben Anmeldedaten in meinem Projekt anmelden müssen.

Gibt es eine Funktion in Discourse oder bewährte Vorgehensweisen für den Umgang damit? Ich würde mich über jegliche Anleitung oder Vorschläge freuen, um das SSO-Erlebnis nahtloser zu gestalten.

Vielen Dank!

Ein Ansatz zur Bewältigung dieses Szenarios wird im Abschnitt „Den Prozess für authentifizierte Benutzer nahtlos gestalten“ dieses Themas beschrieben: Create a DiscourseConnect login link.

2 „Gefällt mir“

Wenn ich mich zum ersten Mal mit Discourse über SSO anmelde, möchte ich wissen, ob eine API oder Methode verfügbar ist, die mir Benutzerdaten wie eine Benutzer-ID oder ein Token zur Verfügung stellen kann, die ich an die Discourse-API senden kann. Im Gegenzug würde Discourse diese Daten, wie die Benutzer-ID oder das Token, in die Discourse Connect-URL-Anfrage aufnehmen.

Sie können die external_id verwenden, die Sie in der DiscourseConnect-Nutzlast festgelegt haben, um eine API-Anfrage an Discourse zu stellen. Diese Anfrage gibt das vollständige Benutzerobjekt zurück.

1 „Gefällt mir“

Sie verstehen nicht, was ich vermitteln möchte. Ich frage nicht nach dem Abrufen von Benutzerdetails aus Discourse nach dem Login. Bitte verstehen Sie den vollständigen Ablauf dessen, was ich erreichen möchte, und lassen Sie mich wissen, ob dies mit Discourse möglich ist oder ob ich meinen eigenen Ansatz verfolgen soll.

Derzeit habe ich ein Projekt, das mit dem Laravel-Framework erstellt wurde, und ich möchte den Benutzern den Zugang zum Discourse-Forum für Feedback ermöglichen. Ich habe mich entschieden, SSO-Login für Discourse zu implementieren. Ich habe ein Discourse-Admin-Konto erstellt und die notwendigen Einstellungen für den SSO-Login aktiviert, einschließlich der Aktivierung von SSO, der Festlegung der Weiterleitungs-URL und der Konfiguration des Geheimnisses.

Nun habe ich einen „Discourse Connect“-Button in meinem Projekt hinzugefügt. Ich möchte, dass sich Benutzer, wenn sie auf diesen Button klicken, mit meinen Anmeldeinformationen registrieren oder anmelden und sich automatisch bei Discourse anmelden. Wenn Benutzer auf den „Discourse Connect“-Button klicken, werden sie zu meiner Basis-Community-URL mit dem Session/SSO-Endpunkt weitergeleitet, der dann zurück zu meiner Discourse Connect-URL weiterleitet. Ich erhalte die SSO- und Sig-Parameter in der Anfrage, von denen ich verstehe, dass sie zur Validierung dienen. Ich benötige jedoch die Benutzer-ID oder eine Kennung, um Benutzerdaten aus meiner Datenbank abzurufen, um den Benutzer zu validieren, zu authentifizieren und bei Discourse anzumelden.

Meine Frage ist: Gibt es eine API oder einen Mechanismus in Discourse, der die Benutzer-ID zusammen mit den SSO- und Sig-Parametern in der Anfrage zurückgeben kann? Dies ist wichtig, denn ohne den Abruf von Benutzerdaten in der Anfrage müsste ich den Benutzer erneut anmelden, was zu einer schlechten Benutzererfahrung führen würde. Im Wesentlichen wird, wenn sich ein Benutzer in meinem Projekt anmeldet und auf den „Discourse Connect“-Button klickt, die Discourse Connect-URL ausgelöst und ich erhalte die SSO- und Sig-Parameter. Um den Benutzer zu authentifizieren, muss ich Benutzerdaten aus der Datenbank abrufen, aber dazu müsste sich der Benutzer erneut anmelden, was ich vermeiden möchte.

Ich möchte eine nahtlose Erfahrung, bei der sich der Benutzer nicht erneut anmelden muss, wenn er sich bereits einmal angemeldet hat. Er sollte direkt über seine Projektanmeldeinformationen auf das Discourse-Forum zugreifen können.

Ich bin mir nicht sicher, ob ich verstehe, wo das Problem auftritt.

Verwenden Sie diese Bibliothek für DiscourseConnect: GitHub - spinen/laravel-discourse-sso: Integrate Discourse SSO into Laravel?

Wenn ich mir diesen Code ansehe (laravel-discourse-sso/src/Controllers/SsoController.php at develop · spinen/laravel-discourse-sso · GitHub), bin ich mir nicht sicher, wie er den Fall eines Benutzers behandelt, der bereits in der Laravel-App angemeldet ist.

1 „Gefällt mir“