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.
- 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.
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 einenHTTP GETAufruf 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, setzenfrontchannel_logout_session_requiredSie 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 diesidnicht 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 einesiframezum 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.
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.Name des Anspruchs Verwendung Beschreibung issErforderlich Emittenten-Kennung. subOptional Subjekt-ID. Muss vorhanden sein, wenn sidnicht vorhanden ist.audErforderlich Publikum oder Publikumsgruppen. iatErforderlich Zu gegebener Zeit herausgegeben. expErforderlich Ablaufzeit. jtiErforderlich Eindeutige Kennung des Tokens. eventsErforderlich http://schemas.openid.net/event/backchannel-logoutJSON-Objekt, das den Namen des Mitglieds enthält. sidOptional Sitzungskennung. Muss vorhanden sein, wenn subnicht vorhanden ist.
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. |
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.- 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.