Einmalige Abmeldung für OIDC-Anwendungen

Mit „Single Logout“ (SLO) können sich Benutzer gleichzeitig von allen Single-Sign-On-Anwendungen abmelden. Diese Funktion erhöht die Sicherheit, indem sie unbefugten Zugriff auf noch offene Sitzungen verhindert, insbesondere wenn ein Gerät gemeinsam mit anderen Personen genutzt wird.

Bei der Implementierung von Single-Logout-Funktionen (SLO) gibt es drei Arten von Sitzungen.
Bewerbungsrunde
Obwohl die Anwendung das „ OpenID “ (OP) zur Authentifizierung von Benutzern verwendet, kann sie den Benutzer, der sich bei der Anwendung angemeldet hat, möglicherweise nachverfolgen. In der Regel verfolgt eine Anwendung Sitzungen mithilfe eines Browser-Cookies. Die Anwendung ist dafür verantwortlich, die Sitzung beim Abmelden zu beenden.
Autorisierungsserver- OpenID -Anbieter (OP)-Sitzung
Ein Autorisierungsserver verwaltet zudem eine Benutzersitzung und speichert diese in einem Cookie. Ein Autorisierungsserver löscht beim Abmelden die Benutzersitzung sowie die mit dieser Benutzersitzung verbundenen Berechtigungen und Tokens.
Identität Quelle Sitzung
Benutzer können sich mit einer Benutzersitzung aus einer Identitätsquelle anmelden. Beim Abmelden möchte der Benutzer möglicherweise auch die aktuelle Benutzersitzung beenden.
Hinweis: Die einmalige Abmeldung unterstützt keine Abmeldung von einer Sitzung beim Identitätsanbieter. Außerdem wird das Abmelden aus SAML -Anwendungen nicht unterstützt. Obwohl SAML über einen ähnlichen Endpunkt für die Durchführung von „ IdP-initiated “ und die durch den Dienstleister initiierte Abmeldung verfügt, ist dieser nicht in die OIDC-Einmalabmeldung integriert.

Es gibt zwei Mechanismen, über die ein Autorisierungsserver (OP) der Anwendung mitteilen kann, dass eine Abmeldung ausgelöst wurde: den Front-Channel und den Back-Channel. Bei beiden Mechanismen registriert die Anwendung einen Endpunkt für die Abmeldung, den der Autorisierungsserver aufruft. Dieser Endpunkt umschließt den Code, den die Anwendung zum Löschen ihrer Sitzung verwendet. Der Aufruf des Logout-Endpunkts der Anwendung ist nicht zuverlässig, da IBM® Verify nicht verpflichtet ist, einen erneuten Versuch zu unternehmen oder sicherzustellen, dass die Anwendung ihre Sitzung erfolgreich löscht. Die Abmeldung über den Backchannel ist der bevorzugte Mechanismus.

Abmeldung vom Front-Channel
Ein Front-Channel-Logout oder clientseitiges Logout ist eine Methode des Single Logout (SLO), bei der der Client (in der Regel ein Webbrowser) direkt mit dem Server kommuniziert, um die Sitzung des Benutzers zu beenden. Dies geschieht in der Regel, indem eine Anfrage an den Server gesendet wird, das Sitzungs-Cookie oder das Token zu löschen. Der Server sendet daraufhin eine Bestätigung der Abmeldung. Diese Methode ist unkompliziert und eignet sich gut für Szenarien mit nur einer Domain. Aufgrund möglicher Probleme bei der domänenübergreifenden Kommunikation und der Sicherheit ist es jedoch möglicherweise nicht für komplexe Umgebungen mit mehreren Domänen oder Protokollen geeignet. Wenn Sie den Front-Channel-Mechanismus verwenden, rendert <iframe src="frontchannel_logout_uri"> der Autorisierungsserver (OP) auf einer Seite, um einen HTTP GET Aufruf an den Logout-Endpunkt der Anwendung auszulösen. Die Anwendung kann den Autorisierungsserver auffordern, die Informationen zur Sitzungs-ID (sid) und zum Aussteller (iss) als zusätzliche Abfrageparameter zu übermitteln. Wenn der Anwendungsclient über die dynamische Client-Registrierung erstellt wird, setzen frontchannel_logout_session_required Sie die Client-Metadaten auf „true“. Wenn Sie die Anwendung „ OpenID “ in der Admin-Benutzeroberfläche konfigurieren, finden Sie IBM Verify die entsprechende Einstellung auf der Registerkarte „Anmeldung “. Scrollen Sie zum Abschnitt „Einstellungen für die einmalige Abmeldung“ und aktivieren Sie das Kontrollkästchen „Sitzung erforderlich “. Die Anwendung kann diese Informationen nutzen, um die Anfrage zu validieren und festzustellen, aus welchen Sitzungen die Abmeldung erfolgen soll. Wenn die sid nicht mit der aktuellen oder einer kürzlich erfolgten Sitzung beim Autorisierungsserver (OP) übereinstimmt, ignoriert die Anwendung die Abmeldeanforderung möglicherweise.
Hinweis: OIDC Front-Channel Logout empfiehlt die Verwendung eines iframe zum Aufruf des Front-Channel-Logout-Endpunkts. iframeModerne Browser blockieren standardmäßig die Weitergabe von Cookies von Drittanbietern. Wenn sich die Domäne der Anwendung von der Domäne des Autorisierungsservers unterscheidet, erhält sie keine Cookies, was dazu führen kann, dass die Anwendung den Benutzer nicht ordnungsgemäß abmeldet. Der Benutzer müsste seinen Browser so konfigurieren, dass Cookies von Drittanbietern für die Domain des Autorisierungsservers zugelassen werden.
Abmeldung über den Hintergrundkanal
Ein Back-Channel-Logout oder serverseitiges Logout ist eine Methode des Single Logout (SLO), bei der der Identitätsanbieter ( IdP ) direkt mit dem Dienstanbieter (SP) kommuniziert, um die Sitzung des Benutzers zu beenden. Dies erfolgt in der Regel über einen sicheren Kanal, der während des anfänglichen Authentifizierungsprozesses zwischen dem IdP und dem SP hergestellt wird. Wenn Sie den Back-Channel-Mechanismus verwenden, sendet der Autorisierungsserver (n) über eine direkte Back-Channel-API einen POST-Befehl mit dem Befehl „ HTTP “ an den Abmelde-Endpunkt der Anwendung. Der Autorisierungsserver stellt ein JWT-Token für die Abmeldung aus, das die folgenden Informationen enthält.
Name des Anspruchs Verwendung Beschreibung
iss Erforderlich Emittenten-Kennung.
sub Optional Subjekt-ID. Muss vorhanden sein, wenn sid nicht vorhanden ist.
aud Erforderlich Publikum oder Publikumsgruppen.
iat Erforderlich Zu gegebener Zeit herausgegeben.
exp Erforderlich Ablaufzeit.
jti Erforderlich Eindeutige Kennung des Tokens.
events Erforderlich http://schemas.openid.net/event/backchannel-logoutJSON-Objekt, das den Namen des Mitglieds enthält.
sid Optional Sitzungskennung. Muss vorhanden sein, wenn sub nicht vorhanden ist.
Der Autorisierungsserver (OP) verwendet dieselbe Konfiguration, um das JWT-Token für die Abmeldung zu signieren, zu verschlüsseln oder beides, wie auch beim ID-Token.
end_session_endpointIn einem von der anwendenden Partei (RP) initiierten Abmeldeszenario löst eine Anwendung die Abmeldung aus, indem sie eine Weiterleitung an den Endpunkt des Autorisierungsservers vornimmt, der im Discovery-Endpunkt des Autorisierungsservers veröffentlicht ist. Die Anwendung sendet möglicherweise die folgenden Anfrageparameter.
Parametername Verwendung Beschreibung
id_token_hint Empfohlen Das ID-Token, das der Autorisierungsserver als Hinweis auf die authentifizierte Sitzung des Benutzers mit der Anwendung ausgestellt hat.
logout_hint Optional Ein Hinweis an den Autorisierungsserver bezüglich des Benutzers, der sich abmeldet.
client_id Optional Die Client-ID der Anwendung.
post_logout_redirect_uri Optional Die URI, an die der User Agent des Benutzers nach dem Abmelden weitergeleitet werden soll, wie von der Anwendung angefordert.
state Optional Ein nicht transparenter Wert, der von der Anwendung verwendet wird, um den Status zwischen der Abmeldeanforderung und dem Rückruf an den post_logout_redirect_uri Endpunkt aufrechtzuerhalten.
ui_locales Optional Die vom Benutzer bevorzugten Sprachen und Schriftarten für die Benutzeroberfläche.
Wenn das id_token_hint nicht angegeben ist oder das ID-Token nicht zum aktuell angemeldeten Benutzer gehört, fragt der Autorisierungsserver den Benutzer, ob die Sitzung beim Autorisierungsserver beendet werden soll. Anschließend ermittelt der Autorisierungsserver – ähnlich wie beim vom OP initiierten Abmeldeszenario – die Liste der Anwendungen, die mit derselben OP-Sitzung angemeldet waren. Es benachrichtigt die Anwendungen mithilfe eines der Mechanismen zum Abmelden vom Kanal. Wenn der Benutzer dann seine Zustimmung erteilt, löscht der Autorisierungsserver seine eigene Sitzung. Wenn die post_logout_redirect_uri angegeben ist und anhand der Client-Konfiguration überprüft werden kann, erfolgt am Ende des Abmeldevorgangs eine Weiterleitung zu dieser URI. Andernfalls zeigt der Autorisierungsserver den Zusammenfassungsbericht zur Abmeldung an.
Tipp: Wenn Sie einen benutzerdefinierten Endpunkt für die Abmeldung erstellen,
Zum Abmelden vom Front-Kanal
Verify erwartet, dass der Endpunkt für die Abmeldung innerhalb von 3 Sekunden antwortet.
Zum Abmelden über den Backchannel
  • Verify erwartet, dass der Endpunkt bei Erfolg den Status „ 2xx “ und bei Fehlern den Status „400“ zurückgibt.
  • Verify erwartet, dass der Endpunkt für die Abmeldung innerhalb von 3 Sekunden antwortet.
  • Um die Validierung des JWT-Abmeldetokens zu beschleunigen, speichert der Abmelde-Endpunkt der Anwendung den Verify JWKS-Endpunkt im Cache.