Omniauth JWT-Weiterleitung

Nach diesem habe ich SSO mit JWT erfolgreich eingerichtet.

Bei der Nutzung der discourse-omniauth-jwt-Bibliothek bin ich mir jedoch unsicher, wie ich Benutzer nach der Anmeldung weiterleiten kann.

Wenn sich ein Benutzer auf meiner Seite anmeldet, erhalte ich das JWT und melde ihn sofort auch bei Discourse an. Am Ende dieses Ablaufs landet er jedoch auf der Discourse-Website und nicht zurück auf meiner Seite.

Ich habe versucht, die Weiterleitungsmethoden der omniauth-Bibliothek zu prüfen, die den origin-Parameter und das destination_url-Cookie enthalten, wie hier beschrieben. Keine dieser Methoden scheint zu funktionieren.

Vielleicht kann @eviltrout hier etwas Licht ins Dunkel bringen.

EDIT: Mir ist gerade aufgefallen, dass ich mir zwei verschiedene Bibliotheken angesehen habe: omniauth und die omniauth-Callbacks von Discourse. Trotzdem bin ich mir immer noch unsicher, wie ich das zum Laufen bekomme.

Das Problem ist also folgendes:

  1. Ein Benutzer meldet sich auf Ihrer Website an.
  2. Sie leiten ihn weiter, um sich bei Discourse anzumelden.
  3. Er ist dann bei Discourse eingeloggt?

Ich glaube nicht, dass dies ein unterstützter Ablauf ist. Normalerweise befindet sich ein Benutzer auf Discourse, klickt auf „Anmelden“, wird zu Ihrer Website für die Authentifizierung weitergeleitet und dann zurück. Wenn sich ein Benutzer direkt auf Ihrer Website anmeldet, sollte er auf Ihrer Website bleiben.

Üblicherweise gehen wir so vor, dass Discourse abgemeldet bleibt, aber wenn der Benutzer auf „Anmelden“ klickt, wird er ohne erneutes Ausfüllen des Authentifizierungsformulars zurück weitergeleitet.

Hmm, stimmt, das ergibt Sinn. Sich einzuloggen bringt jetzt nicht mehr viel, wenn man darüber nachdenkt, da das Embed die Auth-Sitzung nicht nutzen kann.

Die Embeds nutzen also die Auth-Sitzung (oder das Sitzungs-Cookie), um private Discourse-Themen anzuzeigen oder auszublenden.

Dieser Auth-Flow ergibt zwar Sinn, aber zunächst werde ich Benutzer in einem neuen Tab zum Discourse-Forum für die Anmeldung weiterleiten. Nach einem Neuladen können sie dann auf private Themen zugreifen.