Wie man die Benutzersitzung vollständig abmeldet und OAuth-Daten löscht

Ich habe eine Herausforderung mit der Logout-Logik.

Wir verwenden die Auth0-Konfiguration mit Discourse OAuth2, und das Problem ist, dass, wenn wir den Logout mit currentUser.destroySession() auslösen, die Discourse-Sitzung beendet wird, da der Benutzer abgemeldet ist, aber die OAuth-Daten irgendwie noch zwischengespeichert werden?

Was meine ich damit?

Kontext: Wenn Sie SSO verwenden, würden Sie erwarten, dass, wenn sich ein Benutzer von Ihrer Website abmeldet, er bei seinem nächsten Anmeldeversuch von Ihrer Website zur SSO-Seite weitergeleitet wird, wo er seine Anmeldedaten eingeben kann und nach der Authentifizierung zurück zu Ihrer Website mit einer aktiven Sitzung weitergeleitet wird.

In diesem Kontext scheint Discourse den Benutzer nicht vollständig abzumelden. Immer wenn ich mich von Discourse abmelde, funktioniert es gut, aber wenn ich versuche, mich wieder auf meiner Forum-Website anzumelden, löst Discourse die SSO-Seite nicht erneut aus. Irgendwie merkt es sich immer noch das zuvor angemeldete SSO-Konto, wählt es automatisch aus und meldet den Benutzer an, was sehr seltsam ist.

Und das würde im Grunde bedeuten, dass ich mit diesem Benutzer feststecke. Ich kann nicht zu einem anderen Benutzerkonto wechseln, es sei denn, ich verwende vielleicht Inkognito oder einen völlig anderen Browser :frowning:

Erwartung: Sobald ich auf Abmelden klicke, sollte ich beim nächsten Versuch, mich wieder anzumelden, zu meiner Auth0 SSO-Seite weitergeleitet werden, wo ich das Notwendige tun kann, und dann werde ich zurück zum Discourse-Forum weitergeleitet.

Scheint ein Problem mit currentUser.destroySession() zu sein, wie es die Sitzung und die OAuth-Daten löscht?

Ich habe auch getestet, indem ich manuell einen API-Aufruf gemacht habe, um die Benutzersitzung zu zerstören, immer noch die gleichen Ergebnisse, keine Verbesserungen:

fetch(`https://MY_FORUM.discourse.group/admin/users/USER_ID/log_out`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Api-Key': 'API_KEY',
    'Api-Username': 'ADMIN_USERNAME',
  },
})

Bitte teilen Sie Ihre Erkenntnisse mit, wenn Sie eine Idee haben, wie man den Logout bei Verwendung von OAuth beheben/angehen kann.

1 „Gefällt mir“