Dies ist eine alte Version des Dokuments!


Konfiguration

Die ReweriteMap darf nicht innerhalb der Elemente <Location> bzw. <Directory> definiert werden!

Unter Linux wird die RewriteMap wie folgt definiert:

<VirtualHost sp.beispiel-uni.de:443>
   ...
   RewriteEngine On 
   RewriteMap shibchecker "prg:/usr/bin/php /PATH/TO/shibchecker.php"
   ...
   <Location>
   ...
   </Location>
   ...   
</VirtualHost>

Windows:

<VirtualHost sp.beispiel-uni.de:443>
...
   RewriteEngine On 
   RewriteMap shibchecker "prg:c:/PATH/TO/php.exe c:/PATH/TO/shibchecker.php"
   ...
   <Location>
   ...
   </Location>
   ...   
</VirtualHost>

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 normal und lazy erfolgen, nicht bei mixedLazy!

<Location /checker>
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/eviluse/SESSIONREMOVER.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$		
</Location>
  • Zuletzt geändert: vor 4 Jahren