Zum Hauptinhalt springen

Abmelden

Das Abmelden in Logto umfasst zwei Ebenen:

  • Logto-Sitzungsabmeldung: Beendet die zentrale Anmeldesitzung unter der Logto-Domain.
  • App-Abmeldung: Löscht den lokalen Sitzungsstatus und die Tokens in deiner Client-Anwendung.

Um besser zu verstehen, wie Sitzungen in Logto funktionieren, siehe Sitzungen.

Abmelde-Mechanismen

1) Nur clientseitige Abmeldung

Die Client-App löscht ihren eigenen lokalen Sitzungsstatus und Tokens (ID- / Zugangs- / Auffrischungstokens). Dadurch wird der Benutzer nur aus dem lokalen Zustand dieser App abgemeldet.

  • Die Logto-Sitzung kann weiterhin aktiv sein.
  • Andere Apps unter derselben Logto-Sitzung können weiterhin SSO nutzen.

2) Sitzung bei Logto beenden (globale Abmeldung in aktueller Logto-Implementierung)

Um die zentrale Logto-Sitzung zu löschen, leitet die App den Benutzer zum End-Session-Endpunkt weiter, zum Beispiel:

https://{your-logto-domain}/oidc/session/end

Im aktuellen Verhalten des Logto SDK:

  1. signOut() leitet zu /session/end weiter.
  2. Dann geht es zu /session/end/confirm.
  3. Das Standard-Bestätigungsformular sendet automatisch logout=true.

Dadurch wird die aktuelle SDK-Abmeldung als globale Abmeldung behandelt.

hinweis:
  • Globale Abmeldung: Widerruft die zentrale Logto-Sitzung.

Was passiert während der globalen Abmeldung

Während der globalen Abmeldung:

  • Die zentrale Logto-Sitzung wird widerrufen.
  • Zugehörige App-Berechtigungen werden je nach Autorisierungsstatus der App behandelt:
    • Wenn offline_access nicht gewährt ist, werden die zugehörigen Berechtigungen widerrufen.
    • Wenn offline_access gewährt ist, werden die Berechtigungen durch die End-Session nicht widerrufen.
  • Bei offline_access-Fällen bleiben Auffrischungstokens und Berechtigungen gültig, bis entweder die Berechtigung abläuft, das Auffrischungstoken abläuft oder ein expliziter Widerruf erfolgt.

Lebensdauer der Berechtigung und Auswirkung von offline_access

  • Die Standard-Lebensdauer (TTL) einer Logto-Berechtigung beträgt 180 Tage.
  • Wenn offline_access gewährt ist, wird die App-Berechtigung durch die End-Session standardmäßig nicht widerrufen.
  • Auffrischungstoken-Ketten, die mit dieser Berechtigung verbunden sind, können weiter genutzt werden, bis die Berechtigung abläuft, das Auffrischungstoken abläuft oder die Berechtigung explizit widerrufen wird.
  • Bei Single Page Applications (SPAs) verlängert die Auffrischung des Tokens nicht die TTL des Auffrischungstokens, sodass das Auffrischungstoken möglicherweise vor der Berechtigung abläuft.

Föderierte Abmeldung: Back-Channel-Logout

Für konsistentes Verhalten über mehrere Apps hinweg unterstützt Logto Back-Channel-Logout.

Wenn sich ein Benutzer von einer App abmeldet, kann Logto alle Apps, die an derselben Sitzung teilnehmen, benachrichtigen, indem ein Logout-Token an die registrierte Back-Channel-Logout-URI jeder App gesendet wird.

Wenn Is session required in den Back-Channel-Einstellungen der App aktiviert ist, enthält das Logout-Token sid, um die Logto-Sitzung zu identifizieren.

Typischer Ablauf:

  1. Benutzer startet die Abmeldung in einer App.
  2. Logto verarbeitet die End-Session und sendet Logout-Token(s) an die registrierte(n) Back-Channel-Logout-URI(s).
  3. Jede App validiert das Logout-Token und löscht ihren eigenen lokalen Sitzungsstatus / Tokens.

Abmeldemethoden in Logto SDKs

  • SPA und Web: client.signOut() löscht den lokalen Token-Speicher und leitet zum Logto-End-Session-Endpunkt weiter. Du kannst eine Redirect-URI nach dem Logout angeben.
  • Native (einschließlich React Native / Flutter): löscht in der Regel nur den lokalen Token-Speicher. Sitzungslose Webviews bedeuten, dass kein persistentes Logto-Browser-Cookie gelöscht werden muss.
hinweis:

Für native Anwendungen, die keine sitzungslose Webview unterstützen oder die emphasized-Einstellungen nicht erkennen (Android-App mit React Native oder Flutter SDK), kannst du den Benutzer zwingen, sich erneut anzumelden, indem du den Parameter prompt=login in der Autorisierungsanfrage übergibst.

Erzwinge erneute Authentifizierung bei jedem Zugriff

Für besonders sicherheitsrelevante Aktionen füge prompt=login in die Authentifizierungsanfrage ein, um SSO zu umgehen und die erneute Eingabe der Zugangsdaten zu erzwingen.

Wenn du offline_access anforderst (um Auffrischungstokens zu erhalten), füge außerdem consent, prompt=login consent hinzu.

Typische kombinierte Einstellung:

prompt=login consent

FAQs

Ich erhalte keine Back-Channel-Logout-Benachrichtigungen.

  • Stelle sicher, dass die Back-Channel-Logout-URI korrekt im Logto-Dashboard registriert ist.
  • Stelle sicher, dass deine App einen aktiven Anmeldestatus für denselben Benutzer- / Sitzungs-Kontext hat.

OIDC Back-Channel-Logout verstehen.