Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibsp:config-slo [2020/04/22 15:10] Silke Meyerde:shibsp:config-slo [2020/04/23 16:44] (aktuell) Schreiterer, Frank
Zeile 26: Zeile 26:
 **Einschränkungen:** Es ist nicht möglich, auf einem Server mehrere Anwendungen im Modus "mixedLazy" und "normal" bzw. "lazy" gemeinsam zu betreiben, da bei "mixedLazy" der sessionHook mit dem zugehörigen Weiterleitungsskript nicht verwendet werden darf (s.u.). Der gemeinsame Betrieb von Anwendungen im Modus "normal" und "lazy" stellt kein Problem dar. **Einschränkungen:** Es ist nicht möglich, auf einem Server mehrere Anwendungen im Modus "mixedLazy" und "normal" bzw. "lazy" gemeinsam zu betreiben, da bei "mixedLazy" der sessionHook mit dem zugehörigen Weiterleitungsskript nicht verwendet werden darf (s.u.). Der gemeinsame Betrieb von Anwendungen im Modus "normal" und "lazy" stellt kein Problem dar.
  
-===== Session-Initialisierung normal und lazy =====+==== Session-Initialisierung normal und lazy ====
  
 Da es nahezu unmöglich ist, alle Bedingungen im Apache-Webserver selbst abzubilden, wird hier auf eine externe Lösung zurückgegriffen: Am Apache-Webserver wird eine RewriteMap konfiguriert, die ein externes Programm aufruft. Da es nahezu unmöglich ist, alle Bedingungen im Apache-Webserver selbst abzubilden, wird hier auf eine externe Lösung zurückgegriffen: Am Apache-Webserver wird eine RewriteMap konfiguriert, die ein externes Programm aufruft.
Zeile 43: Zeile 43:
     - zusätzlich eine weitere Anwendungssession und / oder ein Shibboleth-Cookie einzuschleusen     - zusätzlich eine weitere Anwendungssession und / oder ein Shibboleth-Cookie einzuschleusen
     - die Shibboleth-Session während der Sitzung zu verändern     - die Shibboleth-Session während der Sitzung zu verändern
-  - doLogin – nur bei Anwendungsszenario „lazy“ \\ Am Webserver muss mit einer RewriteRule auf das Login umgeleitet werden, sonst ist das Einschleusen einer vorhanden Anwendungs-Session möglich! Beim Login muss die Anwendungs-Session erzeugt werden! [[de:shibslohttpd:functioning#sonderzustaende|Siehe auch Wirkungsweise Prüfskript – Sonderzustände Punkt 1]] +  - doLogin – nur bei Anwendungsszenario „lazy“ \\ Am Webserver muss mit einer RewriteRule auf das Login umgeleitet werden, sonst ist das Einschleusen einer vorhanden Anwendungs-Session möglich! Beim Login muss die Anwendungs-Session erzeugt werden! Siehe weiter unten bei [[de:shibsp:config-slo#das_pruefskript|Prüfskript]] Sonderzustände Punkt 1 
-  - doAppSession \\ Am Webserver muss mit einer RewriteRule die Initialisierung der Anwendungs-Session sicher gestellt werden. Da beim Login noch keine Anwendungs-Session vorhanden sein darf ist es möglich, dass unmittelbar nach dem erfolgreichen Shibboleth-Login noch keine Anwendungs-Session für die RewriteRule existiert, aber das Cookie schon existiert und somit verändert werden könnte, [[de:shibslohttpd:functioning#sonderzustaende|siehe auch Wirkungsweise Prüfskript – Sonderzustände Punkt 2]]+  - doAppSession \\ Am Webserver muss mit einer RewriteRule die Initialisierung der Anwendungs-Session sicher gestellt werden. Da beim Login noch keine Anwendungs-Session vorhanden sein darf ist es möglich, dass unmittelbar nach dem erfolgreichen Shibboleth-Login noch keine Anwendungs-Session für die RewriteRule existiert, aber das Cookie schon existiert und somit verändert werden könnte, Siehe weiter unten bei [[de:shibsp:config-slo#das_pruefskript|Prüfskript]] Sonderzustände Punkt 2
   - good \\ wenn keine Aktion notwendig ist.   - good \\ wenn keine Aktion notwendig ist.
  
 Mit Hilfe der RewriteMap wird das Prüfskript bei jeder Anfrage an den Webserver ausgeführt. Beim Login beträgt die dadurch zusätzlich verursachte Ausführungszeit bis zu 20 Millisekunden, danach benötigen die Prüfungen i.d.R. unter 0,5 Millisekunden. Mit Hilfe der RewriteMap wird das Prüfskript bei jeder Anfrage an den Webserver ausgeführt. Beim Login beträgt die dadurch zusätzlich verursachte Ausführungszeit bis zu 20 Millisekunden, danach benötigen die Prüfungen i.d.R. unter 0,5 Millisekunden.
  
-===== Session-Initialisierung mixedLazy =====+==== Session-Initialisierung mixedLazy ====
  
 Im Session-Initialisierungsmodus "mixedLazy" sind neben Shibboleth weitere Authentifizierungsmethoden möglich. Bei einer Authentifizierung, die nicht gegen Shibboleth erfolgt, muss man sich auf die Schutzmechanismen der Anwendung verlassen. Im Session-Initialisierungsmodus "mixedLazy" sind neben Shibboleth weitere Authentifizierungsmethoden möglich. Bei einer Authentifizierung, die nicht gegen Shibboleth erfolgt, muss man sich auf die Schutzmechanismen der Anwendung verlassen.
Zeile 59: Zeile 59:
 ===== Das Prüfskript ===== ===== Das Prüfskript =====
  
-Wenn das Prüfskript im Apache-Webserver für die RewriteMap konfiguriert wurde, wird es in der ''RewriteCond'' im zu schützenden Verzeichnis aufgerufen:<code apache>+Wenn das Prüfskript (s.u.) im Apache-Webserver für die RewriteMap konfiguriert wurde, wird es in der ''RewriteCond'' im zu schützenden Verzeichnis aufgerufen:<code apache>
 RewriteCond ${Context,Shib-Session-ID,Name des Cookies der Anwendungssession,Cookies,[,mixedLazy]} ^return$</code> RewriteCond ${Context,Shib-Session-ID,Name des Cookies der Anwendungssession,Cookies,[,mixedLazy]} ^return$</code>
  
Zeile 78: Zeile 78:
  
 Zusätzlich erfolgt bei "mixedLazy" bei einem Neueintrag die Prüfung, ob die Anwendungssession-ID bereits vergeben wurde. Wenn ja, ist die Anfrage ungültig.  Zusätzlich erfolgt bei "mixedLazy" bei einem Neueintrag die Prüfung, ob die Anwendungssession-ID bereits vergeben wurde. Wenn ja, ist die Anfrage ungültig. 
- 
-==== Sonderzustände ==== 
  
 Es existieren noch zwei Sonderzustände: Es existieren noch zwei Sonderzustände:
  
-  - Im Context „lazy“ gibt es beim ersten Aufruf einen Zustand, bei dem weder die Shib-Session-ID noch die Anwendungs-Session-ID vorhanden sind, was  eine gültige Anfrage sein muss. Hier wird als Rückgabeparameter doLogin“ geliefert. Es liegt bei der Administration, auf diesen Zustand mit einer RewriteRule zum Login zu reagieren, falls die Anwendung nicht selbsttätig zum Shibboleth-Login weiter leitet. Erfolgt keine Weiterleitung zum Login, so entsteht hier eine Sicherheitslücke, da dann eine ungewollte Anwendungs-Session eingeschleust werden kann! +  - Im Modus "lazygibt es beim ersten Aufruf einen Zustand, bei dem weder die Shib-Session-ID noch die Anwendungs-Session-ID vorhanden ist. Dies muss eine gültige Anfrage sein. Hier wird als Rückgabeparameter ''doLogin'' geliefert. Es liegt bei der Administration, auf diesen Zustand mit einer RewriteRule zum Login zu reagieren, falls die Anwendung nicht selbsttätig zum Shibboleth-Login weiterleitet**Achtung:** Erfolgt keine Weiterleitung zum Login, so entsteht hier eine Sicherheitslücke, da dann eine ungewollte Anwendungssession eingeschleust werden kann! 
-  - Im Moment der durchgeführten Authentifizierung mit Shibboleth darf noch keine Anwendungs-Session vorhanden sein, aber es muss eine Shib-Session-ID existieren. Dieser Zustand muss als gültige Anfrage erklärt werden, aber es muss noch sicher gestellt werden, dass zur Shib-Session-ID die korrekte Anwendungs-Session zugeordnet wird. Hier wird als Rückgabeparameter doAppSession“ geliefert. \\ Auf diesen Zustand muss die Administration reagieren, sonst besteht die Gefahr, dass ein Cookie einer vorherigen Session der Anwendung eingeschleust wird! Es muss ein zusätzlicher Request erfolgen, in dem die Anwendungs-Session in den Variablen für das Prüfskript zur Verfügung gestellt werden. Hierzu bestehen zwei Möglichkeiten: +  - Im Moment der durchgeführten Authentifizierung mit Shibboleth darf noch keine Anwendungssession vorhanden sein, aber es muss eine Shib-Session-ID existieren. Dieser Zustand muss als gültige Anfrage erklärt werden, aber es muss noch sichergestellt werden, dass zur Shib-Session-ID die korrekte Anwendungssession zugeordnet wird. Hier wird als Rückgabeparameter ''doAppSession'' geliefert. Auf diesen Zustand muss die Administration reagieren, sonst besteht die Gefahr, dass ein Cookie einer vorherigen Session eingeschleust wird! Es muss ein zusätzlicher Request erfolgen, in dem die Anwendungssession in den Variablen für das Prüfskript zur Verfügung gestellt wird. Hierzu bestehen zwei Möglichkeiten: 
-    - Es ist möglich, die Session mittels einer Umleitung auf ein zusätzliches Skript zu erzeugen (funktioniert bei PHP), was zu bevorzugen ist, oder falls dies nicht möglich ist +    - Empfohlen: Es ist möglich, die Session mittels einer Umleitung auf ein zusätzliches Skript zu erzeugen (funktioniert bei PHP). 
-    - am Apache-Webserver einen Refresh-Header dem Request hinzuzufügen, der einmalig für den Reload der Seite sorgt. +    - Alternativ: Am Apache-Webserver kann dem Request ein Refresh-Header hinzugefügt werden, der einmalig für den Reload der Seite sorgt.
- +
-FIXME php7+
  
 <callout color="#ff9900" title="Voraussetzungen"> <callout color="#ff9900" title="Voraussetzungen">
-  * php -> Versionen? +  * php -> getestet mit php5, php7(.2) 
-  * memcached auf localhost (oder ggf. in Skripten anpassen)\\  +  * memcached auf localhost (oder ggf. in Skripten anpassen) 
-  * php5-memcache nicht php5-memcached!!!\\  +  * php-memcache (nicht php-memcached!!!) 
-  * shibd Version >= 2.5\\  +  * shibd Version >= 2.5 
-  * Apache-Webserver Version, empfohlen 2.4 \\ mit mod_rewrite und mod_headers aktiviert+  * Apache-Webserver mit mod_rewrite und mod_headers
 </callout> </callout>
  
Zeile 536: Zeile 532:
  
  
-====== Konfiguration ======+===== Konfiguration =====
  
 +FIXME
 Je nach [[de:shibslohttpd:introduction#anwendungsszenarien|Anwendungsszenario]] sind unterschiedliche Konfigurationen notwendig. Je nach [[de:shibslohttpd:introduction#anwendungsszenarien|Anwendungsszenario]] sind unterschiedliche Konfigurationen notwendig.
 Für alle Anwendungsszenarien muss die [[de:shibslohttpd:configuration:all|allgemeine Konfiguration]] durchgeführt werden. Für alle Anwendungsszenarien muss die [[de:shibslohttpd:configuration:all|allgemeine Konfiguration]] durchgeführt werden.
Zeile 547: Zeile 544:
 FIXME Alle hier aufgeführten Skripte sind beispielhaft und müssen ggf. angepasst werden. FIXME Alle hier aufgeführten Skripte sind beispielhaft und müssen ggf. angepasst werden.
  
-==== checker.php ====+checker.php
  
 Sorgt für den notwendigen zusätzlichen Request beim SessionHook. Sorgt für den notwendigen zusätzlichen Request beim SessionHook.
Zeile 557: Zeile 554:
 </file> </file>
  
-==== initsess.php ====+initsess.php => Erzeugt eine appsession 
 <file php initsess.php> <file php initsess.php>
 <?php <?php
Zeile 571: Zeile 569:
  
  
-==== remsess.php ====+remsess.php => entfernt bei Zugriff mit einer ungültigen Kombination shibsession appsession beides sessions
  
 <file php remsess.php> <file php remsess.php>
  • Zuletzt geändert: vor 4 Jahren