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:07] – [Todo] 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.
- +
-Siehe auch: [[de:shibslohttpd:configuration|Konfigurationsbeispiele]] +
- +
- +
-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 332: Zeile 325:
 ===== Cleanup beim Logout ===== ===== Cleanup beim Logout =====
  
-Um die Sicherungseinträge beim Logout zu entfernen, wird in ''/etc/shibboleth/shibboleth2.xml'' das [[https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPNotify|<Notify>-Element]] des Shibboleth-Daemons verwendet. Es wird unterhalb des <Session>-Elements definiert und kann für Front- und Back-Channel konfiguriert werden.+Um die Einträge beim Logout zu entfernen, wird in ''/etc/shibboleth/shibboleth2.xml'' das [[https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPNotify|<Notify>-Element]] des Shibboleth-Daemons verwendet. Es wird unterhalb des <Session>-Elements definiert und kann für Front- und Back-Channel konfiguriert werden.
  
 Über den Front-Channel werden die Cookies der Anwendung gelöscht. Über den Back-Channel werden die Einträge im Datenspeicher und die Anwendungssession in der Anwendung selbst zerstört. Über den Front-Channel werden die Cookies der Anwendung gelöscht. Über den Back-Channel werden die Einträge im Datenspeicher und die Anwendungssession in der Anwendung selbst zerstört.
Zeile 338: Zeile 331:
 Konfiguration: Konfiguration:
 <code xml shibboleth2.xml> <code xml shibboleth2.xml>
-+...
 <Errors supportContact="foobar@beispiel-uni.de" <Errors supportContact="foobar@beispiel-uni.de"
             logoLocation="/shibboleth-sp/logo.jpg"             logoLocation="/shibboleth-sp/logo.jpg"
Zeile 346: Zeile 339:
  <Notify Channel="back" Location="https://sp.beispiel-uni.de/PATH/TO/logoutnotify.php" />  <Notify Channel="back" Location="https://sp.beispiel-uni.de/PATH/TO/logoutnotify.php" />
  <Notify Channel="front" Location="https://sp.beispiel-uni.de/PATH/TO/logoutnotify.php" />  <Notify Channel="front" Location="https://sp.beispiel-uni.de/PATH/TO/logoutnotify.php" />
-+...
 </code> </code>
  
Zeile 539: Zeile 532:
  
  
 +===== Konfiguration =====
  
-Weiter zu [[de:shibslohttpd:limitations|Einschränkungen, Voraussetzungen, Todo]] +FIXME
- +
-====== Einschränkungen, Todo ====== +
- +
- +
- +
-====== Konfiguration ====== +
 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 553: Zeile 540:
 Alle Konfigurationen sind für Apache 2.4. Man beachte, dass sich die Konfigurationselemente von Apache 2.2 nach Apache 2.4 geändert haben, siehe z.B. [[https://www.switch.ch/aai/support/presentations/techupdate-2014/12_Apache_24_vs_22.pdf]], [[https://www.switch.ch/aai/guides/sp/access-rules/]] und [[https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig]]. Alle Konfigurationen sind für Apache 2.4. Man beachte, dass sich die Konfigurationselemente von Apache 2.2 nach Apache 2.4 geändert haben, siehe z.B. [[https://www.switch.ch/aai/support/presentations/techupdate-2014/12_Apache_24_vs_22.pdf]], [[https://www.switch.ch/aai/guides/sp/access-rules/]] und [[https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApacheConfig]].
  
-=====Hilfsskripte ======+===== Weitere Hilfsskripte =====
  
-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 567: Zeile 554:
 </file> </file>
  
-===== initsess.php =====+initsess.php => Erzeugt eine appsession 
 <file php initsess.php> <file php initsess.php>
 <?php <?php
Zeile 581: Zeile 569:
  
  
- +remsess.php => entfernt bei Zugriff mit einer ungültigen Kombination shibsession appsession beides sessions
- +
-===== remsess.php =====+
  
 <file php remsess.php> <file php remsess.php>
Zeile 669: Zeile 655:
  
 </file> </file>
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
  
 {{tag>fixme sp slo single-logout sessions}} {{tag>fixme sp slo single-logout sessions}}
  • Zuletzt geändert: vor 4 Jahren