===== Konfiguration Anwendungsszenario lazy ===== **In allen Konfigurationsbeispielen muss APPSESSIONNAME durch den Cookie-Namen der zu schützen Anwendung ersetzt werden, die den Identifier der Anwendungs-Session enthält.** ==== Einrichtung für SessionHook ==== Die Einrichtung für SessionHook ist identisch der Konfiguration [[de:shibslohttpd:configuration:normal#einrichtung_fuer_sessionhook|Anwendungsszenario normal]]. ==== Schutz der Anwendung ==== Konfiguration **Apache 2.4:** Login #KEINE Prüfung mit RewriteMap-Skript, da die Prüfung in der der Anwendung erfolgt.!!! authType shibboleth ShibRequestSetting requireSession true Require shib-attr eppn ~ ^foo*@beispiel-uni.de$ Require shib-attr eduPersonEntitlement ~ ^urn:beispiel-uni.de:foobar$ Konfiguration **Apache 2.4:** Anwendung (komplett) #Lazy Session Shibboleth authType shibboleth ShibRequestSetting requireSession false Require shibboleth ShibUseHeaders on RewriteEngine On #den Wert der Anwendungssession merken um die Anwendungssession sauber zerstören zu können RewriteCond %{HTTP:Cookie} APPSESSIONNAME=([^;]+) RewriteRule .* - [E=appsid:%1] #prüfen, ob die Anfrage gültig ist und ggf. das Logout durchführen #ACHTUNG: Erst die Anwendungssession zerstören und das das Shibboleth-Logout! RewriteCond ${shibchecker:lazy,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie}} ([^;]+) #Um die Aufrufe zu minimieren, wird das Ergebnis in einer Umgebungsvariable gespeichert und dann können die #verschiedenen Rückgabewerte wieder in einzelnen Bedingungen ausgewertet werden RewriteRule .* - [E=shibcheckertype:%1] #Login? - das redirect muss automatisch erfolgen, da sonst ein Nutzer die Möglichkeit hätte, ein altes Cookie #der Anwendung einzuschleusen und durch den sessionHook und den erneuten Aufruf von shibchecker wird sonst #eine Anwendungs-Session gefunden, die dann zum Logout führt RewriteCond %{ENV:shibcheckertype} ^doLogin$ RewriteRule .* https://sp.beispiel-uni.de/LOGINLAZY #Anwendungssession bekannt machen? - Anwendungssession muss noch initialisiert (shibchecker bekannt gemacht werden) #werden, damit das Anwendungs-Cookie nicht verändert werden kann #bevorzugt RewriteCond %{ENV:shibcheckertype} ^doAppSession$ #über ein extra Skript, wenn ohne weiteres die Anwendungssession initialisiert werden kann RewriteRule .* https://sp.beispiel-uni.de/Path/To/initsess.php #oder über Refresh-Header, falls man das Initialisieren der Anwendungssession nicht selbst triggern kann #RewriteCond %{ENV:shibcheckertype} ^doAppSession$ #RewriteRule .* - [E=doAppSession:1] #Header set Refresh "0" env=doAppSession #Logout? RewriteCond %{ENV:shibcheckertype} ^doLogout$ RewriteRule .* https://sp.beispiel-uni.de/Path/To/remsess.php?appsid=%{ENV:appsid} Anmerkung: \\ Führt die Anwendung selbständig das Redirect zum Shibboleth-Login und auch die Initialisierung der Anwendungssession durch, so verkürzt sich die Konfiguration, da auf die Rückgabewerte doLogin und doAppSession nicht reagiert werden muss. Konfiguration **Apache 2.4:** Anwendung (reduziert) #Lazy Session Shibboleth authType shibboleth ShibRequestSetting requireSession false Require shibboleth ShibUseHeaders on RewriteEngine On #den Wert der Anwendungssession merken um die Anwendungssession sauber zerstören zu können RewriteCond %{HTTP:Cookie} APPSESSIONNAME=([^;]+) RewriteRule .* - [E=appsid:%1] #prüfen, ob die Anfrage gültig ist und ggf. das Logout durchführen #ACHTUNG: Erst die Anwendungssession zerstören und das das Shibboleth-Logout! RewriteCond ${shibchecker:lazy,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie}} ^doLogout$ RewriteRule .* https://sp.beispiel-uni.de/Path/To/remsess.php?appsid=%{ENV:appsid}