#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}