Session Terminierung RP-PEP
Es gibt mehrere Auslöser, welche dazu führen können, dass die SSO Session eines Benutzers auf dem RP-PEP beendet wird. Diese sind im Folgenden beschrieben. Grundsätzlich gilt, es gibt innerhalb der SSO-Domäne keinen partiellen Logout (nur auf einer Applikation). Der Logout findet immer global für die gesamte SSO-Session statt. Die im Folgenden beschriebenen Szenarien sind für Applikationen beschrieben, welche in den Netzen der Bundesverwaltung gehostet werden und somit durch einen RP-PEP geschützt sind.Session Terminierung durch Logout
Grundsätzlich gilt, der Logout aus der SSO Session wird auf dem RP-PEP gestartet. Dabei wird vom Benutzer in einer der in der Session verwendeten Applikationen ein URL aufgerufen die auf dem RP-PEP den Logout anstösst. Der RP-PEP informiert anschliessend alle in der SSO Session auf dem PEP verwendeten Applikation, so dass dieses ihrerseits die Sessions abschliessen können.Logout URI auf dem PEP
Die Applikation MUSS dem Benutzer die Möglichkeit anbieten seine Session auf dem PEP und damit auch in der Applikation zu beenden. Der RP-PEP unterstützt kein SAML 2.0 Single Logout.
Als Logout URI kann grundsätzlich jeder URI der Applikation verwendet werden, welche sich in einem authentifizierten Bereich auf dem RP-PEP befindet. Der Logout der Session wird durch den Query Parameter „logout“ vom RP-PEP getriggert, falls dieser in einem Request im authentischen Bereich mitgeschickt wird.
Idealerweise entspricht der Logout Link in der Applikation der URI der Entry Page oder einer dedizierten Logout Page der Applikation, die durch den Query Parameter logout ergänzt wird.
Richtig
https://www.gate.amt.admin.ch/appl1/private/welcome.html?logout
- => Die Logout URI befindet sich im authentischen ‚/appl1/private/*‘ Bereich. Die Logout URI ist auf die Entry Page der Applikation gelegt mit dem Query Parameter ?logout.
https://www.gate.amt.admin.ch/appl1/public/overview.html?logout
- => Die Logout URI befindet sich hier im nicht authentischen ‚/appl1/public/*‘ Bereich.
https://www.gate.amt.admin.ch/appl1/private/logout.do?logout
- => Die Logout URI ist hier auf die Logout URI der Applikation gelegt. Wird nach einem Logout ein Relogin auf dieser URI gemacht, so wird die Session auf der Applikation gleich wieder geschlossen.
LogoutURI
Applikatorische Sessions werden an die SSO-Session gekoppelt, indem applikatorische Session Cookies nicht bis zum Webbrowser weitergereicht werden, sondern auf dem PEP in einem Cookie Cache des SSO-Session-Kontext zurückgehalten werden. Es kann pro Applikation jeweils ein LogoutURI im RP-PEP konfiguriert werden. Ist dieser URI definiert, so wird jede innerhalb dieser SSO-Session verwendete Applikation benachrichtigt, wenn die SSO-Session beendet wird. Der RP-PEP sendet dazu einen HTTP GET Request an den definierten URI, inklusive der applikatorischen Session-Cookies. So können Applikationen vom PEP über beendete SSO-Sessions informiert werden, um ihrerseits die Session des Benutzers sauber zu schliessen.
Ablauf Session Logout
Die vom Benutzer gesteuerte Terminierung der Session (Logout) auf dem RP-PEP verläuft wie unten dargestellt. SAML 2.0 Single Logout (SLO) wird von eIAM nicht unterstützt. Die Ausgangslage ist eine bestehende SSO-Session des Benutzers mit dem RP-PEP und je einer etablierten Session zwischen RP-PEP und Applikation A und Applikation B.
-
- Session Terminierung durch Logout
- Der Web Browser sendet einen Request für Applikation A an den RP-PEP in der laufenden Session.
- Der RP-PEP sendet Request an die Applikation A in der laufenden Session.
- Die Applikation A sendet Response an den RP-PEP.
- Der RP-PEP sendet Response an den Webbrowser.
- Der Web Browser sendet einen Request für Applikation B an den RP-PEP in der laufenden Session.
- Der RP-PEP sendet einen Request an die Applikation B in der laufenden Session.
- Die Applikation B sendet die Response an den RP-PEP.
- Der RP-PEP sendet die Response an den Web Browser.
- Der Benutzer verwendet die Logout Funktion in der Applikation A und der Web Browser sendet den Request auf die Logout URI.
- Der RP-PEP ruft den Logout URI von Applikation A auf und gibt dabei das Session Cookie von Applikation A mit.
- Die Applikation A invalidiert die Session des Benutzers.
- Die Applikation A sendet die Logout Response an den RP-PEP.
- Der RP-PEP ruft den Logout URL von Applikation B auf und gibt dabei das Session Cookie von Applikation B mit.
- Die Applikation B invalidiert die Session des Benutzers.
- Die Applikation B sendet die Logout Response an den RP-PEP.
- Der RP-PEP invalidiert die Session des Benutzers
- Der RP-PEP sendet dem Web Browser eine HTML Seite mit der Bestätigung des abgeschlossenen Logouts.
Session Terminierung durch Logout-Anwendungen mit STS-PEPs
Die folgende Sequenz erklärt den Prozess der Sitzungsbeendigung für Anwendungen, die nicht hinter einem RP-PEP, sondern an einem anderen Ort gehostet werden (BV-Net, Cloud). Da diese Applikationen den RP-PEP nicht als Front Door für alle Verbindungen zwischen Web Browser und Applikation benutzen, kann der RP-PEP nicht der Master über alle Session sein. Allerdings ist er, er als SAML IdP aus Sicht der Applikationen, die einzige Stelle die alle innerhalb der SSO Session verwendeten Service Provider kennt und diese über das Ende einer Session informieren kann.
Die Ausgangslage ist eine bestehende Session des Browser des Benutzers mit dem RP-PEP. In der SSO Session wurde vom Benutzer Applikation A und Applikation B verwendet. Beide Applikationen haben in der Folge je einen SAML AuthnRequest an den RP-PEP gesendet und eine SAML Response von diesem erhalten.
-
- Session Terminierung durch Logout für Applikationen ausserhalb der Netze der Bundesverwaltung
- Der Benutzer sendet einen HTTP Request an die Logout URI von Applikation A.
- Applikation A erstellt einen signierten SAML LogoutRequest zuhanden des RP-PEP. Sie bettet den SAML LogoutRequest in ein selbstübermittelndes HTML Formular ein und sendet dieses als HTTP Response an den Web Browser.
- Der Web Browser sendet den LogoutRequest per HTTP POST an die Single Logout Location URL des RP-PEP.
- Der RP-PEP als IdP prüft den SAML LogoutRequest auf dessen Signatur und sucht nach der entsprechenden SSO Session. Er bildet eine Liste mit allen über den Logout zu informierenden Service Providern. Der RP-PEP erstellt einen signierten SAML LogoutRequest zuhanden der Applikation B.
- Der RP-PEP übermittelt den SAML Logout Request mittels selbstübermittelndem HTML Formular in der HTTP Response an den Web Browser.
- Der Web Browser sendet den LogoutRequest per HTTP POST an die SingleLogout Location URL von Applikation B.
- Applikation B prüft den SAML LogoutRequest, identifiziert die Session und generiert eine signierte SAML LogoutResponse. Die Session auf Applikation B wird beendet.
- Die LogoutResponse wird mittels selbstübermittelndem HTML Formular in der HTTP Response an den Web Browser übermittelt.
- Der Web Browser sendet die LogoutResponse per HTTP POST an den RP-PEP.
- Der RP-PEP prüft die LogoutResponse. Sind noch weitere Applikationen in der SSO Session verwendet worden, so werden diese in der gleichen Art über das Ende der Session informiert. War Applikation B die letzte Applikation, welche den SAML Single-Logout nicht angestossen hat, so erstellt der RP-PEP eine signierte SAML Logout Response zuhanden von Applikation A.
- Die LogoutResponse wird in ein selbstübermittelndes HTML Formular eingebettet und in der HTTP Response an den Browser des Benutzers geschickt.
- Der Web Browser sendet die LogoutResponse per HTTP POST an Applikation A.
- Applikation A prüft die LogoutResponse und beendet die Session des Benutzers.
- Applikation A sendet an den Web Browser des Benutzers in der HTTP Response die Bestätigung, dass der Logout durchgeführt wurde und die SSO Session beendet wurde.
Session Terminierung durch Session Inaktivität
Eine weitere Möglichkeit, warum die Session des Benutzers auf dem RP-PEP invalidiert und beendet wird, ist eine längere Inaktivität auf der Session. Der Abbau von inaktiven Sessions erfolgt einerseits aus Sicherheitsgründen und andererseits, um nicht benötigte Systemressourcen freizugeben.Die vom RP-PEP auf Grund einer längeren Inaktivität der Session eingeleitete Terminierung der Session ist im Folgenden Ablauf beschrieben. Da der Logout nicht über einen Request des Benutzers angestossen wurde, kann dem Benutzer keine Information über den erfolgen Logout angezeigt werden. Sendet der Benutzer nach dem Beenden der Session auf dem RP-PEP durch zu lange Inaktivität wieder einen Request an den RP-PEP, so wird eine neue Session mit dem Web Browser des Benutzers gestartet.
-
- Session Terminierung wegen Session Inaktivität
- Der Web Browser sendet einen HTTP Request für Applikation A an den RP-PEP in der laufenden Session.
- Der RP-PEP sendet den HTTP Request an die Applikation A in der laufenden Session.
- Die Applikation A sendet die HTTP Response an den RP-PEP.
- Der RP-PEP sendet die Response an den Web Browser.
- Der Web Browser sendet einen HTTP Request für Applikation B an den RP-PEP in der laufenden Session.
- Der RP-PEP sendet den HTTP Request an die Applikation B in der laufenden Session.
- Die Applikation B sendet die HTTP Response an den RP-PEP.
- Der RP-PEP sendet die HTTP Response an den Webbrowser.
- Nach Ablauf des auf dem RP-PEPP definierten Inactivity Intervall (Zeitspanne in welchen auf dieser Session keine Requests mehr vom PEP empfangen wurden) initiiert der RP-PEP von sich aus den Logout auf Applikation A und sendet einen HTTP Request auf den Logout URL der Applikation, zusammen mit dem Session Cookie das die Applikation ausgestellt hat.
- Die Applikation A invalidiert die Session des Benutzers.
- Die Applikation A sendet eine HTTP Response an den RP-PEP. Diese HTTP Response wird nicht an den Web Browser weitergeleitet, da der Browser keinen HTTP Request gestellt hat.
- Der RP-PEP sendet einen HTTP Request an die Logout URL der Applikation B zusammen mit dem Session Cookie das die Applikation B ausgestellt hat.
- Die Applikation B sendet eine HTTP Response an den RP-PEP. Diese HTTP Response wird nicht an den Web Browser weitergeleitet, da der Browser keinen HTTP Request gestellt hat.
- Der RP-PEP invalidiert die von ihm geführte Session des Benutzers. Das Beenden der Session auf dem PEP geschieht unabhängig von der Reaktion der Applikationen auf den Aufruf der Logout URL.
Session Terminierung durch Erreichen der maximalen Session Dauer
Eine weitere Möglichkeit, weshalb die Session des Benutzers auf dem RP-PEP invalidiert und abgebaut wird, ist das Erreichen der maximal zulässigen Session Lebensdauer. Wird diese erreicht, so wird die Session auf dem RP-PEP automatisch invalidiert und alle während der Session verwendeten Applikationen werden vom RP-PEP über das Invalideren der Session notifiziert. Die Session wird dabei auch dann invalidiert, wenn auf der Session noch Aktivität stattfindet. Die Maximale Session Dauer auf dem RP-PEP ist begrenzt.Die vom RP-PEP PEP initiierte Terminierung der Session, eingeleitet auf Grund des Erreichens der maximalen Session Dauer, läuft wie unten beschrieben ab. SAML 2.0 Single Logout (SLO) wird nicht unterstützt.
-
- Session Terminierung max. Session Lifetime
Die Ausgangslage ist eine bereits länger bestehende Session zwischen dem Webbrowser des Benutzers und dem RP-PEP. Während der Session werden die Applikationen A und B verwendet.
- Der Web Browser schickt einen HTTP Request an den RP-PEP für Applikation A.
- Der RP-PEP schickt den HTTP Request nach Prüfung an die Applikation A weiter.
- Die Applikation A verarbeitet den HTTP Request und sendet die HTTP Response an den RP-PEP.
- Der RP-PEP sendet die HTTP Response an den Web Browser.
- Der Web Browser schickt einen HTTP Request an den RP-PEP für Applikation B.
- Der RP-PEP schickt den HTTP Request nach Prüfung an die Applikation B weiter.
- Die Applikation B verarbeitet den HTTP Request und sendet die Response an den RP-PEP.
- Der RP-PEP sendet die HTTP Response an den Web Browser.
- Die Session des Benutzers auf dem RP-PEP erreicht die maximale Lebensdauer.
- Der RP-PEP sendet einen HTTP Request an den Logout URL der Applikation A zusammen mit dem Session Cookie der Applikation A.
- Die Applikation A invalidiert die Session des Benutzers.
- Die Applikation A sendet die HTTP Response an den PEP. Diese HTTP Response wird nicht an den Web Browser des Benutzers weitergegeben.
- Der RP-PEP sendet einen HTTP Request an den Logout URL der Applikation B zusammen mit dem Session Cookie der Applikation B.
- Die Applikation B invalidiert die Session des Benutzers.
- Die Applikation B sendet die HTTP Response an den RP-PEP. Diese Response wird vom RP-PEP nicht an den Browser des Benutzers weitergegeben.
- Der RP-PEP invalidiert die Session des Benutzers.
- Der Web Browser des Benutzers sendet einen neuen HTTP Request an den RP-PEP zusammen mit dem mittlerweile ungültigen RP-PEP Session Cookie.
- Der RP-PEP prüft den HTTP Request und erkennt, dass ein neuer Security Kontext aufgebaut werden muss.
- Der RP-PEP redirektet den Web Browser auf den RP-PEP Login URL. Dabei wird mit der HTTP Response ein neues Session Cookie im Web Browser gesetzt.
- Der Web Browser sendet den HTTP Request auf den RP-PEP Login URL.