Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
de:shibslohttpd:configuration:normal [2015/12/09 09:49] – Schreiterer, Frank | de:shibslohttpd:configuration:normal [2015/12/09 11:33] (aktuell) – [Schutz der Anwendung] Schreiterer, Frank |
---|
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]]! | 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:** | Konfiguration **Apache 2.4:** |
<code Apache httpd.conf> | <code Apache httpd.conf> |
<Location /checker> | <Location /checker> |
authType shibboleth | authType shibboleth |
ShibRequestSetting requireSession true | ShibRequestSetting requireSession true |
ShibUseHeaders on | ShibUseHeaders on |
RewriteEngine On | RewriteEngine On |
#den Wert der Anwendungssession merken um die Anwendungssession sauber zerstören zu können | #den Wert der Anwendungssession merken um die Anwendungssession sauber zerstören zu können |
RewriteCond %{HTTP:Cookie} APPSESSIONNAME=([^;]+) | RewriteCond %{HTTP:Cookie} APPSESSIONNAME=([^;]+) |
RewriteRule .* - [E=appsid:%1] | RewriteRule .* - [E=appsid:%1] |
| |
#Test der Werte mit RewriteMap-Skript ohne mixedLazy | #Test der Werte mit RewriteMap-Skript ohne mixedLazy |
RewriteCond ${shibchecker:sessionHook,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie}} ^doLogout$ | RewriteCond ${shibchecker:sessionHook,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie}} ^doLogout$ |
RewriteRule .* https://sp.beispiel-uni.de/eviluse/SESSIONREMOVER.php?appsid=%{ENV:appsid} | 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. | #mit mixedLazy darf der Aufruf nicht erfolgen, da in diesem Modus das Einschleusen einer Anwendungssession |
#Es wird jedoch vom shibchecker geprüft, ob die Anwendungssession bereits vergeben war. | #vor der Shib-Anmeldung nicht zu verhindern ist. |
#FALSCH bei mixedLazy | #Es wird jedoch vom shibchecker geprüft, ob die Anwendungssession bereits vergeben war. |
#RewriteCond ${shibchecker:sessionHook,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie},mixedLazy} ^doLogout$ | #FALSCH bei mixedLazy |
| #RewriteCond ${shibchecker:sessionHook,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie},mixedLazy} ^doLogout$ |
</Location> | </Location> |
| |
==== Schutz der Anwendung ==== | ==== Schutz der Anwendung ==== |
| |
Konfiguration **Apache:** | Konfiguration **Apache 2.4:** |
| |
<code Apache httpd.conf> | <code Apache httpd.conf> |
<Location /NORMALAPPLICATION> | <Location /NORMALAPPLICATION> |
authType shibboleth | authType shibboleth |
ShibRequestSetting requireSession true | ShibRequestSetting requireSession true |
ShibUseHeaders on | ShibUseHeaders on |
<RequireAll> | <RequireAll> |
Require shib-attr eppn ~ ^foo*@beispiel-uni.de$ | Require shib-attr eppn ~ ^foo*@beispiel-uni.de$ |
Require shib-attr eduPersonEntitlement ~ ^urn:beispiel-uni.de:foobar$ | Require shib-attr eduPersonEntitlement ~ ^urn:beispiel-uni.de:foobar$ |
</RequireAll> | </RequireAll> |
#prüfen, ob die Anfrage gültig ist und ggf. das Logout durchführen | #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! | #ACHTUNG: Erst die Anwendungssession zerstören und das das Shibboleth-Logout! |
RewriteEngine On | RewriteEngine On |
RewriteCond ${shibchecker:normal,%{HTTP:Shib-Session-ID},APPSESSIONNAME,%{HTTP:Cookie}} ([^;]+) | 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 | #Um die Aufrufe zu minimieren, wird das Ergebnis in einer Umgebungsvariable gespeichert und dann können |
RewriteRule .* - [E=shibcheckertype:%1] | #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 | #Anwendungssession bekannt machen? - Anwendungssession muss noch initialisiert (shibchecker bekannt |
RewriteCond %{ENV:shibcheckertype} ^doAppSession$ | #gemacht werden) werden, damit das Anwendungs-Cookie nicht verändert werden kann |
#über ein extra Skript, wenn ohne weiteres die Anwendungssession initialisiert werden kann | #bevorzugt |
RewriteRule .* https://sp.beispiel-uni.de/initsess/initsess.php | RewriteCond %{ENV:shibcheckertype} ^doAppSession$ |
| #über ein extra Skript, wenn ohne weiteres die Anwendungssession initialisiert werden kann |
#oder über Refresh-Header, falls man das Initialisieren der Anwendungssession nicht selbst triggern kann | RewriteRule .* https://sp.beispiel-uni.de/Path/To/initsess.php |
#RewriteCond %{ENV:shibcheckertype} ^doAppSession$ | |
#RewriteRule .* - [E=doAppSession:1] | #oder über Refresh-Header, falls man das Initialisieren der Anwendungssession nicht selbst triggern kann |
#Header set Refresh "0" env=doAppSession | #RewriteCond %{ENV:shibcheckertype} ^doAppSession$ |
| #RewriteRule .* - [E=doAppSession:1] |
#Logout? | #Header set Refresh "0" env=doAppSession |
RewriteCond %{ENV:shibcheckertype} ^doLogout$ | |
RewriteRule .* https://sp.beispiel-uni.de/eviluse/SESSIONREMOVER.php?appsid=%{ENV:appsid} | #Logout? |
| RewriteCond %{ENV:shibcheckertype} ^doLogout$ |
| RewriteRule .* https://sp.beispiel-uni.de/Path/To/remsess.php?appsid=%{ENV:appsid} |
</Location> | </Location> |
</code> | </code> |
| |
| |