Nächste Überarbeitung | Vorhergehende Überarbeitung |
de:shibslohttpd:configuration:lazy [2015/12/09 09:49] – angelegt Schreiterer, Frank | de:shibslohttpd:configuration:lazy [2015/12/09 11:36] (aktuell) – [Schutz der Anwendung] Schreiterer, Frank |
---|
| |
==== Einrichtung für SessionHook ==== | ==== Einrichtung für SessionHook ==== |
Die Einrichtung für SessionHook ist identisch der Konfiguration [[de:shibslohttpd:configuration:normal#einrichtung_fuer_sessionhook||Anwendungsszenario normal]] | Die Einrichtung für SessionHook ist identisch der Konfiguration [[de:shibslohttpd:configuration:normal#einrichtung_fuer_sessionhook|Anwendungsszenario normal]]. |
| |
==== Schutz der Anwendung ==== | ==== Schutz der Anwendung ==== |
| |
| Konfiguration **Apache 2.4:** Login |
| |
| <code Apache httpd.conf> |
| <Location /LOGINLAZY> |
| #KEINE Prüfung mit RewriteMap-Skript, da die Prüfung in der <Location /LAZYAPPLICATION> der Anwendung erfolgt.!!! |
| authType shibboleth |
| ShibRequestSetting requireSession true |
| <RequireAll> |
| Require shib-attr eppn ~ ^foo*@beispiel-uni.de$ |
| Require shib-attr eduPersonEntitlement ~ ^urn:beispiel-uni.de:foobar$ |
| </RequireAll> |
| </Location> |
| </code> |
| |
| Konfiguration **Apache 2.4:** Anwendung (komplett) |
| <code Apache httpd.conf> |
| <Location /LAZYAPPLICATION> |
| #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} |
| |
| </Location> |
| |
| </code> |
| |
| 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) |
| |
| <code Apache httpd.conf> |
| <Location /LAZYAPPLICATION> |
| #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} |
| </Location> |
| </code> |