===== Konfiguration Anwendungsszenario normal =====
**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 ====
Das Skript [[ |checker.php]], welches von Shibd beim Login einmal über den SessionHook aufgerufen wird, muss auch in einem komplett durch Shibboleth geschützten Verzeichnis liegen. Die Konfiguration darf nur bei den Anwendungsszenarien [[de:shibslohttpd:introduction#anwendungsszenarien|normal und lazy]] erfolgen, nicht bei [[de:shibslohttpd:introduction#anwendungsszenarien|mixedLazy]]!
Konfiguration **Apache 2.4:**
authType shibboleth
ShibRequestSetting requireSession true
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]
#Test der Werte mit RewriteMap-Skript ohne mixedLazy
RewriteCond ${shibchecker:sessionHook,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie}} ^doLogout$
RewriteRule .* https://sp.beispiel-uni.de/Path/To/remsess.php?appsid=%{ENV:appsid}
#mit mixedLazy darf der Aufruf nicht erfolgen, da in diesem Modus das Einschleusen einer Anwendungssession
#vor der Shib-Anmeldung nicht zu verhindern ist.
#Es wird jedoch vom shibchecker geprüft, ob die Anwendungssession bereits vergeben war.
#FALSCH bei mixedLazy
#RewriteCond ${shibchecker:sessionHook,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie},mixedLazy} ^doLogout$
Konfiguration **Shibboleth:**
==== Schutz der Anwendung ====
Konfiguration **Apache 2.4:**
authType shibboleth
ShibRequestSetting requireSession true
ShibUseHeaders on
Require shib-attr eppn ~ ^foo*@beispiel-uni.de$
Require shib-attr eduPersonEntitlement ~ ^urn:beispiel-uni.de:foobar$
#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!
RewriteEngine On
RewriteCond ${shibchecker:normal,%{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]
#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}