Automatische Sitzungsverwaltung mit OAuth SSO

Hallo,

wir betreiben eine Suite von Diensten für eine bestimmte geschlossene Community und planen, Discourse als soziale Plattform einzubinden. Ich frage mich, was der technisch beste und eleganteste Weg ist, eine Discourse-Instanz nahtlos in unsere Suite zu integrieren.

Als Beispiel: Unsere Suite umfasst den Dienst A und den Dienst B (die wir selbst entwickelt haben) sowie einen OAuth2-SSO-Dienst.

Klickt ein Benutzer auf „Anmelden" in Dienst A oder B, wird er zum SSO-Dienst weitergeleitet, loggt sich dort ein und wird wie üblich zurückgeleitet. Dank Cookies und Sitzungssteuerung muss sich ein Benutzer, der sich bereits bei Dienst A angemeldet hat, nicht erneut bei Dienst B anmelden, wenn er später Dienst B aufruft (er verfügt bereits über eine Sitzung).

Genauso möchten wir es Benutzern ermöglichen, nahtlos von Dienst A oder B zum Discourse-Dienst zu wechseln, nachdem sie sich über den SSO-Dienst angemeldet haben. Wir gehen davon aus, dass der Benutzereintrag in allen Diensten vorhanden ist. Derzeit wurde das OAuth2-Discourse-Plugin evaluiert und funktioniert mit unserem SSO-Dienst, erfordert jedoch, dass Benutzer erneut auf „Mit SSO anmelden" klicken, wenn sie Discourse besuchen. Gibt es eine Möglichkeit, z. B. über einen API-Aufruf, automatisch eine Sitzung bei Discourse zu starten, wenn Benutzer sich über den gemeinsamen SSO von Dienst A oder B anmelden?

Darüber hinaus betrifft die oben genannte Frage auch die Integration von Kommentaren über die eingebettete Komponente. Bei einem „öffentlichen" Discourse-Dienst gibt es keine Probleme mit dem Kommentarteil, und Kommentare werden korrekt eingebettet. Wird jedoch ein privater Discourse-Dienst betrieben, wird das eingebettete Kommentarfenster nicht ordnungsgemäß angezeigt, wenn sich Benutzer nicht zuvor auch bei Discourse angemeldet haben. Das ist ein Problem im Zusammenhang mit einer nahtlosen Integration.

Gibt es eine Möglichkeit, diese Probleme zu umgehen? Ich habe überlegt, ein Middleware-Plugin zu entwickeln, das ein Token oder Cookie decodiert und den entsprechenden Benutzer sofort authentifiziert und anmeldet, bevor der eigentliche Aufruf erfolgt. Gibt es ein bestehendes Plugin dafür?

Vielen Dank für Ihre Unterstützung.

2 „Gefällt mir“

Du musst dafür einfach die Site-Einstellung „Anmeldung erforderlich" aktivieren.

Das Aktivieren der Site-Einstellung „Anmeldung erforderlich" löst auch dieses Problem.

2 „Gefällt mir“

Vielen Dank für die schnelle Antwort. Dies löst das Problem jedoch nicht. Sowohl im eingebetteten Discourse-Kommentarfenster als auch beim Aufruf der Discourse-Website muss sich der Benutzer (der bereits über SSO bei einem Dienst wie „Service A

Bei der neuesten Discourse-Version wird der Benutzer automatisch in Discourse eingeloggt, sofern sowohl „Anmeldung erforderlich“ als auch „Authentifizierung sofort“ aktiviert sind und der Benutzer bereits ein gültiges Cookie beim Identity Provider hat.

Bei Versionen vor der neuesten war dieser „magische“ Login-Flow auf Sites beschränkt, die unser eigenes SSO-Protokoll verwenden, wie in Offizielles Single-Sign-On für Discourse (sso) beschrieben.

Ich empfehle ein Update auf die neueste Version.

3 „Gefällt mir“

Hmm, ich verwende Bitnami-Images, und das neueste ist immer noch 2.5.2, also werde ich wahrscheinlich noch etwas warten müssen (oder einen Weg finden, ein manuelles Update durchzuführen, oder ein anderes Image verwenden).

Wie auch immer, vielen Dank, dass Sie mich in die richtige Richtung gelenkt haben. Das wird sehr geschätzt!

Denken Sie daran, dass die Bitnami-Images nicht von den Discourse-Entwicklern unterstützt werden und im Laufe der Jahre viele Inkompatibilitäten mit der normalen Nutzung der Software aufwiesen. Ich empfehle dringend, eine offizielle Standardinstallation von Discourse zu verwenden.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.