Zum Hauptinhalt springen

Abmeldung

Die Abmeldung 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.

Abmeldemechanismen

1) Nur clientseitige Abmeldung

Die Client-App löscht ihre eigene lokale Sitzung und Tokens (ID- / Zugangs- / Auffrischungstokens). Dies meldet den Benutzer nur aus dem lokalen Zustand dieser App ab.

  • 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 der aktuellen Logto-Implementierung)

Um die zentrale Logto-Sitzung zu löschen, leitet die App den Benutzer zum End-Sitzungs-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 Standardbestätigungsformular sendet automatisch logout=true.

Als Ergebnis 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-Gewährungen werden je nach Autorisierungsstatus der App behandelt:
    • Wenn offline_access nicht gewährt ist, werden zugehörige Gewährungen widerrufen.
    • Wenn offline_access gewährt ist, werden Gewährungen nicht durch End-Sitzung widerrufen.
  • Bei offline_access-Fällen bleiben Auffrischungstokens und Gewährungen gültig, bis die Gewährung abläuft.

Gewährungslebensdauer und offline_access-Auswirkung

  • Die Standard-Logto-Gewährung TTL beträgt 180 Tage.
  • Wenn offline_access gewährt ist, widerruft die End-Sitzung diese App-Gewährung standardmäßig nicht.
  • Die mit dieser Gewährung verbundene Auffrischungstoken-Kette kann fortgesetzt werden, bis die Gewährung abläuft (oder explizit widerrufen wird).

Föderierte Abmeldung: Back-Channel-Logout

Für Konsistenz über 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 es ein Logout-Token an die registrierte Back-Channel-Logout-URI jeder App sendet.

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 initiiert Abmeldung von einer App.
  2. Logto verarbeitet die End-Sitzung und sendet Logout-Token(s) an die registrierte Back-Channel-Logout-URI(s).
  3. Jede App validiert das Logout-Token und löscht ihre eigene lokale Sitzung / Tokens.

Abmeldemethoden in Logto SDKs

  • SPA und Web: client.signOut() löscht den lokalen Token-Speicher und leitet zur Logto-End-Sitzungs-Endpoint weiter. Du kannst eine Post-Logout-Redirect-URI angeben.
  • Native (einschließlich React Native / Flutter): löscht normalerweise nur den lokalen Token-Speicher. Sitzungslose Webansicht bedeutet, dass kein persistentes Logto-Browser-Cookie gelöscht werden muss.
hinweis:

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

Erzwinge erneute Authentifizierung bei jedem Zugriff

Für hochsichere Aktionen füge prompt=login in Auth-Anfragen ein, um SSO zu umgehen und die Eingabe von Anmeldedaten jedes Mal zu erzwingen.

Wenn offline_access angefordert wird (um Auffrischungstokens zu erhalten), füge auch 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.

Verständnis des OIDC-Back-Channel-Logouts.