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:aai:training:shibsp [2021/02/18 18:09] – [6. REMOTE_USER an Tomcat übergeben] Silke Meyerde:aai:training:shibsp [2021/12/16 08:53] (aktuell) – [Der User-Identifier: REMOTE_USER] Korrekturen bei User Identifiern Silke Meyer
Zeile 1: Zeile 1:
 ====== Einführung in den Shibboleth SP ====== ====== Einführung in den Shibboleth SP ======
 +<callout color="#ff9900" title="Download der Schulungs-VM und Mitschnitte"> 
 +Die Schulungs-VM können Sie sich [[https://download.aai.dfn.de/ws/2021/sp-schulung/2021-02-18_sp_workshop.ova|hier]] (.ova, 3,9 GB) herunterladen. Die Mitschnitte finden Sie auf [[de:aai:training:shibsp_recordings|dieser Seite]]. 
 +</callout>
 ===== Hinweise zur virtuellen Maschine ===== ===== Hinweise zur virtuellen Maschine =====
   * Sie können den Shibboleth Service Provider mit dieser Anleitung in der VM installieren. Die weiterführenden Links zur Dokumentation sind für Ihre spätere, echte Installation gedacht.   * Sie können den Shibboleth Service Provider mit dieser Anleitung in der VM installieren. Die weiterführenden Links zur Dokumentation sind für Ihre spätere, echte Installation gedacht.
Zeile 46: Zeile 48:
  
 Der IdP loggt nach ''/opt/shibboleth-idp/logs/''. In ''idp-process.log'' finden Sie u.a. die SAML-Assertions, der der IdP herausschickt. Der IdP loggt nach ''/opt/shibboleth-idp/logs/''. In ''idp-process.log'' finden Sie u.a. die SAML-Assertions, der der IdP herausschickt.
 +
 +===== Installation des Shibboleth SP =====
  
 <callout color="#99cc33" title="Lektüre"> <callout color="#99cc33" title="Lektüre">
Zeile 54: Zeile 58:
   * [[https://wiki.shibboleth.net/confluence/display/SP3/ConfigurationFileSummary | Dokumentation im Shibboleth-Wiki: Configuration File Summary]]   * [[https://wiki.shibboleth.net/confluence/display/SP3/ConfigurationFileSummary | Dokumentation im Shibboleth-Wiki: Configuration File Summary]]
 </callout> </callout>
- 
-===== Installation des Shibboleth SP ===== 
  
 ==== Apt-Repository von SWITCHaai einbinden ==== ==== Apt-Repository von SWITCHaai einbinden ====
Zeile 80: Zeile 82:
 </code> </code>
  
-===== Informationen zur SP-Installation =====+===== Untersuchung der SP-Installation =====
  
   * User und Gruppe ''_shibd''   * User und Gruppe ''_shibd''
Zeile 139: Zeile 141:
 </callout> </callout>
  
-===== Untersuchung der Installation =====+===== Untersuchung der SP-Installation II =====
  
 Zunächst schauen Sie sich bitte noch etwas in der VM um. Zunächst schauen Sie sich bitte noch etwas in der VM um.
Zeile 145: Zeile 147:
 Da in der Schulungs-VM IdP und SPs direkt miteinander verbunden werden (also ohne das Bindeglied der Föderationsmetadaten), schauen Sie, wie das gemacht ist: Da in der Schulungs-VM IdP und SPs direkt miteinander verbunden werden (also ohne das Bindeglied der Föderationsmetadaten), schauen Sie, wie das gemacht ist:
   * **Der SP kennt die IdP-Metadaten** aus ''/etc/shibboleth/shibboleth2.xml'': Sie sind dort verlinkt und liegen unter ''/opt/shibboleth-idp/metadata/idp-metadata.xml''.   * **Der SP kennt die IdP-Metadaten** aus ''/etc/shibboleth/shibboleth2.xml'': Sie sind dort verlinkt und liegen unter ''/opt/shibboleth-idp/metadata/idp-metadata.xml''.
-  * **Der IdP kennt die SP-Metadaten für sp1.local und sp2.local** auch bereits. Sie liegen unter ''/opt/shibboleth-idp/metadata/''. Ein fertig konfigurierter Shibboleth SP stellt seine initialen Metadaten unter /Shibboleth.sso/Metadata zum Download bereit. So könnten Sie sie also herunterladen (die Zertifikatsprüfung wird nur hier in der Schulungs-VM übersprungen):<code bash>wget --no-check-certificate https://sp1.local/Shibboleth.sso/Metadata -O /opt/shibboleth-idp/metadata/sp1-metadata.xml+  * **Der IdP kennt die SP-Metadaten für sp1.local und sp2.local** auch bereits. Sie liegen als Dateien unter ''/opt/shibboleth-idp/metadata/''. Diese Dateien sind eingebunden in ''/opt/shibboleth-idp/conf/metadata-providers.xml'' (unten). Ein fertig konfigurierter Shibboleth SP stellt seine initialen Metadaten unter /Shibboleth.sso/Metadata zum Download bereit. So könnten Sie sie also herunterladen (die Zertifikatsprüfung wird nur hier in der Schulungs-VM übersprungen):<code bash>wget --no-check-certificate https://sp1.local/Shibboleth.sso/Metadata -O /opt/shibboleth-idp/metadata/sp1-metadata.xml
 wget --no-check-certificate https://sp2.local/Shibboleth.sso/Metadata -O /opt/shibboleth-idp/metadata/sp2-metadata.xml</code> wget --no-check-certificate https://sp2.local/Shibboleth.sso/Metadata -O /opt/shibboleth-idp/metadata/sp2-metadata.xml</code>
  
-==== Der Identifier: REMOTE_USER ====+==== Der User-Identifier: REMOTE_USER ====
  
 Über die Variable REMOTE_USER wird in ''/etc/shibboleth/shibboleth2.xml'' der primäre Identifier der Browser-Nutzer*innen übergeben. Jedes in ''attribute-map.xml'' (s.u.) genannte Attribute kann als Quelle angegeben werden. Dazu wird die ''id'' referenziert, die in der Attribute Map steht. Bei Mehrfachnennung (mit Leerzeichen getrennt) wird das erste mit Werten befüllte Attribut verwendet. Über die Variable REMOTE_USER wird in ''/etc/shibboleth/shibboleth2.xml'' der primäre Identifier der Browser-Nutzer*innen übergeben. Jedes in ''attribute-map.xml'' (s.u.) genannte Attribute kann als Quelle angegeben werden. Dazu wird die ''id'' referenziert, die in der Attribute Map steht. Bei Mehrfachnennung (mit Leerzeichen getrennt) wird das erste mit Werten befüllte Attribut verwendet.
Zeile 158: Zeile 160:
   * Über die Zeit sollte derselbe Wert nicht für andere Nutzer*innen übermittelt werden.   * Über die Zeit sollte derselbe Wert nicht für andere Nutzer*innen übermittelt werden.
   * Das Attribut sollte nur //einen// Wert liefern. ''mail'' eignet sich deshalb nicht.   * Das Attribut sollte nur //einen// Wert liefern. ''mail'' eignet sich deshalb nicht.
-  * Aus Datenschutzsicht ist ein Identifier zu bevorzugen, der kein SP-übergreifendes User-Tracking erlaubt wie z.B. ''eduPersonUniqueId'', ''eduPersonPrincipalName'' oder die noch relativ neue ''SAML Subject ID''+  * **Aus Datenschutzsicht ist ein Identifier zu bevorzugen, der kein SP-übergreifendes User-Tracking erlaubt** wie z.B. ''SAML Pairwise ID'' oder ''persistentID'' (beide pseudonym und targeted, also pro User*in //pro SP// generiert und persistiert). 
-  * **gute Wahl: persistentId.** Die SAML 2 NameID ist pseudonym und targeted, wird also pro User*in //pro SP// generiert und persistiert.+  * ''SAML Subject ID'' und''eduPersonUniqueID'' sind zwar pseudonym, werden aber nicht pro SP generiert. Daher ist ein SP-übergreifendes User-Tracking möglich (was ja in bestimmten Fällen auch erwünscht sein kann). ''eduPersonPrincipalName'' ist in sehr vielen Fällen nicht pseudonym, sondern basiert auf Namen oder uids. Daher geht der Trend weg von der Nutzung des ''eduPersonPrincipalName'' als User Identifier.
  
 ==== attribute-map.xml ==== ==== attribute-map.xml ====
Zeile 314: Zeile 316:
 ===== Übungen ===== ===== Übungen =====
  
-==== 1. Loglevel ====+==== 1. Anpassung des Loglevels ==== 
 + 
 +<callout color="#ff9900" title="Screencast"> 
 +Die Durchführung dieser Übung können Sie in unserem [[de:aai:training:shibsp_recordings#uebung_1anpassung_des_loglevels|Screencast]] ansehen. 
 +</callout>
  
 Behalten Sie in einer separaten Konsole die Logdateien des SP im Blick: Behalten Sie in einer separaten Konsole die Logdateien des SP im Blick:
Zeile 329: Zeile 335:
 Starten Sie den Daemon neu:<code bash>root@sp:~# systemctl restart shibd.service</code> Starten Sie den Daemon neu:<code bash>root@sp:~# systemctl restart shibd.service</code>
  
-==== 2. Attribute Map auffüllen ====+==== 2. Auffüllen der Attribute Map ==== 
 + 
 +<callout color="#ff9900" title="Screencast"> 
 +Die Durchführung dieser Übung können Sie in unserem [[de:aai:training:shibsp_recordings#uebung_2auffuellen_der_attribute_map|Screencast]] ansehen. 
 +</callout>
  
 Editieren Sie die Datei ''/etc/shibboleth/attribute-map.xml''. Nur wenige Attribute sind hier einkommentiert. Damit der SP auch die anderen Attribute erkennt, entfernen Sie bitte die Kommentarzeichen um die übrigen Attribute. Auch die eduPersonUniqueId, die weiter unten verwendet werden soll, fehlt hier noch. Ergänzen Sie:<code xml><Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.13" id="eduPersonUniqueId"/></code>. Editieren Sie die Datei ''/etc/shibboleth/attribute-map.xml''. Nur wenige Attribute sind hier einkommentiert. Damit der SP auch die anderen Attribute erkennt, entfernen Sie bitte die Kommentarzeichen um die übrigen Attribute. Auch die eduPersonUniqueId, die weiter unten verwendet werden soll, fehlt hier noch. Ergänzen Sie:<code xml><Attribute name="urn:oid:1.3.6.1.4.1.5923.1.1.1.13" id="eduPersonUniqueId"/></code>.
  
 ==== 3. Location schützen ==== ==== 3. Location schützen ====
 +
 +<callout color="#ff9900" title="Screencast">
 +Die Durchführung dieser Übung können Sie in diesem [[de:aai:training:shibsp_recordings#uebung_3eine_location_schuetzen|Screencast]] ansehen.
 +</callout>
  
 Editieren Sie die Datei ''/etc/apache2/sites-enabled/sp1.conf''. Fügen Sie in den VirtualHost für Port 443 folgenden oben bereits erwähnten Abschnitt ein, um beim Zugriff auf ''https://sp1.local'' eine gültige Session zu verlangen:<file xml /etc/apache2/sites-enabled/sp1.conf> Editieren Sie die Datei ''/etc/apache2/sites-enabled/sp1.conf''. Fügen Sie in den VirtualHost für Port 443 folgenden oben bereits erwähnten Abschnitt ein, um beim Zugriff auf ''https://sp1.local'' eine gültige Session zu verlangen:<file xml /etc/apache2/sites-enabled/sp1.conf>
Zeile 364: Zeile 378:
  
 ==== 4. Locations mit unterschiedlichen Regeln ==== ==== 4. Locations mit unterschiedlichen Regeln ====
 +
 +<callout color="#ff9900" title="Screencast">
 +Die Durchführung dieser Übung können Sie in diesem [[de:aai:training:shibsp_recordings#uebung_4locations_mit_unterschiedlichen_regeln_schuetzen#uebung_3eine_location_schuetzen|Screencast]] ansehen.
 +</callout>
  
 Im selben virtuellen Host (sp1.local) sollen jetzt zwei Locations mit verschiedenen Autorisierungsregeln versehen werden. In den Zielverzeichnissen der beiden URLs liegen bereits index.html-Dateien bereit. Zur Erinnerung: Der Identity Provider übermittelt nur eingeschränkte Informationen an den SP1: Im selben virtuellen Host (sp1.local) sollen jetzt zwei Locations mit verschiedenen Autorisierungsregeln versehen werden. In den Zielverzeichnissen der beiden URLs liegen bereits index.html-Dateien bereit. Zur Erinnerung: Der Identity Provider übermittelt nur eingeschränkte Informationen an den SP1:
Zeile 394: Zeile 412:
  
 ==== 5. Zweiten VHost schützen ==== ==== 5. Zweiten VHost schützen ====
 +
 +<callout color="#ff9900" title="Screencast">
 +Die Durchführung dieser Übung können Sie in diesem [[de:aai:training:shibsp_recordings#uebung_5zweiten_vhost_schuetzen|Screencast]] ansehen.
 +</callout>
  
 https://wiki.shibboleth.net/confluence/display/SP3/ApplicationOverride https://wiki.shibboleth.net/confluence/display/SP3/ApplicationOverride
Zeile 564: Zeile 586:
  
 Rufen Sie https://sp2.local/testapp/ auf und Sie sollten die Attribute aus Ihrer index.jsp sehen. Rufen Sie https://sp2.local/testapp/ auf und Sie sollten die Attribute aus Ihrer index.jsp sehen.
- 
-Sie können natürlich auch differenzierte Autorisierungsregeln für den Zugriff auf die testapp erstellen:<file xml /etc/apache2/sites-enabled/sp2.conf> 
-    <Location /testapp> 
-        AuthType shibboleth 
-        ShibRequestSetting applicationId sp2 
-        ShibRequestSetting requireSession 1 
-        <RequireAll> 
-            Require shib-attr affiliation staff@local employee@local faculty@local 
-            Require shib-attr entitlement https://sp2.local/entitlement/politologie 
-        </RequireAll> 
-    </Location></file> 
  
 Alternativ zu mod_proxy_ajp kann auch mod_jk verwendet werden. Siehe hierzu: Alternativ zu mod_proxy_ajp kann auch mod_jk verwendet werden. Siehe hierzu:
Zeile 585: Zeile 596:
  
 ==== 7. Showcase Moodle-Anbindung ==== ==== 7. Showcase Moodle-Anbindung ====
 +
 +<callout color="#ff9900" title="Screencast">
 +Die Durchführung dieser Übung können Sie in diesem [[de:aai:training:shibsp_recordings#showcasemoodle-anbindung_mit_mitgeliefertem_plugin|Screencast]] ansehen.
 +</callout>
 +
   * Moodle-Verzeichnis: ''/var/www/moodle''   * Moodle-Verzeichnis: ''/var/www/moodle''
   * lokaler Moodle-Admin: shibboleth, Passwort: Shibboleth1!   * lokaler Moodle-Admin: shibboleth, Passwort: Shibboleth1!
-  * Achtung: Wenn nur Web-SSO als Anmeldeoption angeboten wird, kann man sich nicht mehr mit dem lokalen Moodle-Admin-Account anmelden.+  * a2ensite moodle.conf
  
 === Plugin-Konfiguration === === Plugin-Konfiguration ===
  • Zuletzt geändert: vor 3 Jahren