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 [2020/04/07 17:20] Wolfgang Pempede:shibsp [2024/02/15 10:07] (aktuell) – [Shibboleth SP (3.x)] Wolfgang Pempe
Zeile 1: Zeile 1:
-~~NOTOC~~ 
 ====== Shibboleth SP ====== ====== Shibboleth SP ======
-{{INLINETOC 2}} 
  
 ===== Installation und allgemeine Dokumentation ===== ===== Installation und allgemeine Dokumentation =====
 Siehe hierzu die betreffenden Seiten   Siehe hierzu die betreffenden Seiten  
   * im [[https://wiki.shibboleth.net/confluence/display/SP3/Home|Shibboleth Wiki]] und   * im [[https://wiki.shibboleth.net/confluence/display/SP3/Home|Shibboleth Wiki]] und
-  * bei [[https://www.switch.ch/aai/guides/sp/|SWITCH]]+  * bei [[https://www.switch.ch/aai/guides/sp/|SWITCH]]; dort auch viele [[https://www.switch.ch/aai/guides/sp/access-rules/|Konfigurationsbeispiele für Autorisierung und Zugriffskontrolle (Access Rules)]]
  
 ===== Konfigurationsbeispiel ===== ===== Konfigurationsbeispiel =====
Zeile 42: Zeile 40:
    <!-- Metadaten der Test-Föderation aktivieren -->    <!-- Metadaten der Test-Föderation aktivieren -->
    <!-- den Pfad zum Zertifikat zur Signaturüberprüfung den lokalen Gegebenheiten anpassen! -->    <!-- den Pfad zum Zertifikat zur Signaturüberprüfung den lokalen Gegebenheiten anpassen! -->
-   <MetadataProvider type="XML" url="http://www.aai.dfn.de/fileadmin/metadata/dfn-aai-test-metadata.xml"+   <MetadataProvider type="XML" url="http://www.aai.dfn.de/metadata/dfn-aai-test-metadata.xml"
          validate="true" backingFilePath="dfn-aai-test-metadata.xml" reloadInterval="3600">          validate="true" backingFilePath="dfn-aai-test-metadata.xml" reloadInterval="3600">
-       <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.g2.pem"/>+       <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" verifyBackup="false"/>
    </MetadataProvider>    </MetadataProvider>
    ...    ...
Zeile 56: Zeile 54:
 </file> </file>
  
-**Filtermechanismen**+Zur MetadataProvider-Konfiguration für die Produktivumgebung der DFN-AAI siehe unter [[de:production#beispiel_sp|Produktivbetrieb]]. 
  
-Wenn der vom SP geschützte Dienst nur von Angehörigen bestimmter Einrichtungen genutzt werden soll, können sogenannte [[https://wiki.shibboleth.net/confluence/display/SP3/MetadataFilter|Metadata Filter]] im SP konfiguriert werden. Dies hat zwei Vorteile:+<callout type="danger" title="Wichtig: Im Sessions-Element unbedingt redirectLimit auf 'host' oder 'exact' setzen!"> 
 +Achten Sie bitte unbedingt darauf, dass in **''shibboleth2.xml''** in allen **''<Sessions>''**-Elementen das XML-Attribut **''redirectLimit''**  
 +  - gesetzt wird und 
 +  - den Wert **''host''** oder **''exact''** erhält! (ggf. in Kombination mit ''allow''
 +Auf diese Weise wird ein Problem mit offenen Weiterleitungen ("Open Redirect") verhindert, das bspw. Phishing-Angriffe wirkungsvoller machen kann, vgl. https://shibboleth.atlassian.net/browse/SSPCPP-714.  
 +Weitere Informationen zu Konfigurationsmöglichkeiten für das ''<Sessions>''-Element sind im [[https://shibboleth.atlassian.net/wiki/spaces/SP3/pages/2065334342/Sessions|Shibboleth-Wiki dokumentiert]]. 
 +</callout> 
 + 
 + 
 +===Filtermechanismen=== 
 + 
 +Wenn der vom SP geschützte Dienst nur von Angehörigen bestimmter Einrichtungen genutzt werden soll, können anhand bestimmter Kriterien sogenannte [[https://shibboleth.atlassian.net/wiki/spaces/SP3/pages/2063696193/MetadataFilter|Metadata Filter]] im SP konfiguriert werden. Dies hat zwei Vorteile:
   - Der SP arbeitet intern nur mit dem gefilterten, in der Regel deutlich reduzierten Metadatensatz   - Der SP arbeitet intern nur mit dem gefilterten, in der Regel deutlich reduzierten Metadatensatz
-  - Ist im SP der entsprechende Discovery Feed Handler konfiguriert (''<Handler type="DiscoveryFeed" Location="/DiscoFeed"/>'') sorgt der Embedded Discovery Service dafür, dass nur die IdPs bzw. Einrichtungen angezeigt werdendie in diesen gefilterten Metadaten enthalten sind. Der entsprechende Parameter in ''idpselect_config.js'' muss hierfür folgendermaßen belegt werden:\\ ''this.dataSource '/Shibboleth.sso/DiscoFeed''' +  - der Embedded Discovery Service zeigt nur diejenigen IdPs bzw. Einrichtungen anwelche in diesen gefilterten Metadaten enthalten sind. In shibboleth2.xml muss ''<Handler type="DiscoveryFeed" Location="/DiscoFeed"/>'' aktiv sein, bitte überprüfen sie das zur Sicherheit!). 
-Im folgenden ein Beispiel für eine **Whitelist**:+ 
 +Die Whitelist wird dann folgendermaßen konfiguriert:
  
 <file xml /etc/shibboleth/shibboleth2.xml> <file xml /etc/shibboleth/shibboleth2.xml>
Zeile 67: Zeile 77:
 ... ...
    <MetadataProvider type="XML"     <MetadataProvider type="XML" 
-         uri="https://www.aai.dfn.de/fileadmin/metadata/DFN-AAI-Basic-metadata.xml" +         url="http://www.aai.dfn.de/metadata/dfn-aai-idp-metadata.xml" 
-         backingFilePath="DFN-AAI-Basic-metadata.xml"  +         validate="true" backingFilePath="dfn-aai-idp-metadata.xml" reloadInterval="3600"> 
-         minRefreshDelay="240" reloadInterval="300"+      <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" verifyBackup="false" /> 
-      <MetadataFilter type="RequireValidUntil" maxValidityInterval="604800"/+      <MetadataFilter type="Include">
-      <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.g2.pem" /> +
-      <MetadataFilter type="Whitelist">+
          <Include>https://idp.uni-beispiel1.de/idp/shibboleth</Include>          <Include>https://idp.uni-beispiel1.de/idp/shibboleth</Include>
          <Include>https://idp.uni-beispiel2.de/idp/shibboleth</Include>          <Include>https://idp.uni-beispiel2.de/idp/shibboleth</Include>
Zeile 82: Zeile 90:
 </file> </file>
  
-Für ein Beispiel eine Metadata Filters anhand einer [[de:entity_attributes#entity_categories|Entity Category]] siehe die Dokumentation des bwIDM-Projekts unter https://www.bwidm.de/teilnahme/dienstanbieter/ (Abschnitt 1.2 - Technische Voraussetzungen)+Für ein Beispiel eines Metadata Filters anhand einer [[de:entity_attributes#entity_categories|Entity Category]] siehe die Dokumentation des bwIDM-Projekts unter https://www.bwidm.de/teilnahme/dienstanbieter/ (Abschnitt 1.2 - Technische Voraussetzungen).
  
 +Weiter Beispiele für Include- und Exclude-Filter anhand von Entity Attributen siehe unter [[https://doku.tid.dfn.de/de:entity_attributes#beispiele_filter|Entity Attributes]].
 +
 +Im folgenden zwei Beispiele für Metadata Filter, die anhand der **Registration Authority** (also der jeweiligen Heimatföderation) auf die eduGAIN-Metadaten angewandt werden:
 +
 +**Nur Identity Provider aus der SWITCHaai (CH) und ACOnet Identity Federation (AT) zulassen:**
 +
 +<file xml /etc/shibboleth/shibboleth2.xml>
 +...
 +   <MetadataProvider type="XML" 
 +         url="http://www.aai.dfn.de/metadata/dfn-aai-edugain+idp-metadata.xml"
 +         validate="true" backingFilePath="dfn-aai-edugain+idp-metadata.xml" reloadInterval="3600">
 +      <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" verifyBackup="false" />
 +      <MetadataFilter type="Include" matcher="RegistrationAuthority">
 +         <registrationAuthority>http://rr.aai.switch.ch/</registrationAuthority>
 +         <registrationAuthority>http://eduid.at</registrationAuthority>
 +      </MetadataFilter>
 +   </MetadataProvider>
 +   ...
 +</file>
 +
 +**Identity Provider aus zwei fiktiven Föderationen ausschließen:**
 +
 +<file xml /etc/shibboleth/shibboleth2.xml>
 +...
 +   <MetadataProvider type="XML" 
 +         url="http://www.aai.dfn.de/metadata/dfn-aai-edugain+idp-metadata.xml"
 +         validate="true" backingFilePath="dfn-aai-edugain+idp-metadata.xml" reloadInterval="3600">
 +      <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" verifyBackup="false" />
 +      <MetadataFilter type="Exclude" matcher="RegistrationAuthority">
 +         <registrationAuthority>http://xyz.qq</registrationAuthority>
 +         <registrationAuthority>http://zyx.ww</registrationAuthority>
 +      </MetadataFilter>
 +   </MetadataProvider>
 +   ...
 +</file>
 +
 +<callout type="primary" title="Hinweis">
 +Die Werte für **registrationAuthority** sind unter https://technical.edugain.org/status dokumentiert. Ein Klick auf den jeweiligen Föderationsnamen öffnet ein Fenster mit allen relevanten Informationen.
 +</callout>
 +
 +\\
 +
 +Nach allen Änderungen in ''shibboleth2.xml'' muss der shibd Service neu gestartet werden:
 +
 +Funktioniert die überarbeitete Konfiguration?
 +<code bash>root@host:~# shibd -t</code>
 +
 +Dann ab dafür:
 <code bash>root@host:~# systemctl restart shibd</code> <code bash>root@host:~# systemctl restart shibd</code>
 +
 +Fallweise kann es passieren, dass der Webserver aus dem Tritt kommt, z.B. nach mehreren shibd-Restarts. In solchen Fällen muss auch dieser neu gestartet werden:
 +<code bash>root@host:~# systemctl restart apache2</code>
  
 ==== Shibboleth EDS (Embedded Discovery Service)==== ==== Shibboleth EDS (Embedded Discovery Service)====
-Siehe hierzu die [[https://wiki.shibboleth.net/confluence/display/EDS10/Embedded+Discovery+Service|Dokumentation im Shibboleth-Wiki]] 
  
 === Installation === === Installation ===
  
-Siehe hierzu die betreffende [[https://wiki.shibboleth.net/confluence/display/EDS10/2.+Installation|Seite im Shibboleth Wiki]]. Für RPM-basierte Linux-Varianten bieten die Shibboleth-Entwickler ein [[https://wiki.shibboleth.net/confluence/display/EDS10/2.+Installation|RPM-Paket]] an. Für andere Systeme gibt es ein [[https://shibboleth.net/downloads/embedded-discovery-service/latest/|tar-File]] zum Download.+(Im Folgenden eine Kurzanleitung zur Installation, eine ausführlichere finden Sie auf den [[https://wiki.shibboleth.net/confluence/display/EDS10/2.+Installation|Seiten im Shibboleth Wiki]].)
  
-<wrap info>Das RPM legt die Dateien des EDS nach /etc/shibboleth-ds/. Daher geht die folgende Anleitung davon aus dass auch auf nicht-RPM-Systemen die Dateien aus dem tar-File nach /etc/shibboleth-dsausgepackt wurden.</wrap>+  * CentOS/RedHat/SuSE 
 + 
 +Für RPM-basierte Linux-Varianten bieten die Shibboleth-Entwickler ein [[https://wiki.shibboleth.net/confluence/display/EDS10/2.+Installation|RPM-Paket]] an. 
 + 
 +  * Debian/Ubuntu/etc. 
 + 
 +Laden Sie das aktuelle [[https://shibboleth.net/downloads/embedded-discovery-service/latest/|tar-File]] herunter, packen Sie es aus und installieren Sie es: 
 + 
 +<code> 
 +root@server:~# wget https://shibboleth.net/downloads/embedded-discovery-service/latest/shibboleth-embedded-ds-1.2.2.tar.gz 
 +root@server:~# tar -xzf shibboleth-embedded-ds-1.2.2.tar.gz 
 +root@server:~# cd shibboleth-embedded-ds-1.2.2 ; make install 
 +</code>
  
 \\ \\
  
 === Konfiguration === === Konfiguration ===
 +
 Damit der EDS die Arbeit aus Sicherheitsgründen nicht verweigert, muss der eigene Vhost-Namen in die "Return White List" eingetragen werden: Damit der EDS die Arbeit aus Sicherheitsgründen nicht verweigert, muss der eigene Vhost-Namen in die "Return White List" eingetragen werden:
  
-<file ini /etc/shibboleth-ds/idpselect_config.js>+<file javascript /etc/shibboleth-ds/idpselect_config.js>
   ...   ...
   this.returnWhiteList = [ "^https:\/\/meinvhost\.meinedomain\.de\/Shibboleth\.sso\/Login.*$" ];   this.returnWhiteList = [ "^https:\/\/meinvhost\.meinedomain\.de\/Shibboleth\.sso\/Login.*$" ];
Zeile 106: Zeile 177:
 </file> </file>
 <wrap warning>Achten Sie auf die korrekte Syntax, der Eintrag muss in Form einer Regular Expression gemacht werden!</wrap> <wrap warning>Achten Sie auf die korrekte Syntax, der Eintrag muss in Form einer Regular Expression gemacht werden!</wrap>
 +
 +Verifizieren Sie in der gleichen Datei, daß der Parameter ''this.dataSource'' den Wert '''/Shibboleth.sso/DiscoFeed''' hat damit das Zusammenspiel zwischen SP und EDS funktioniert.
  
 \\ \\
 +Damit ist der EDS grundsätzlich einsatzbereit. Weitere Hinweise und Informationen (z.B. zur Anpassung des Layouts) finden sich in den Kommentaren der Konfigurationsdatei(en) sowie im 
 +[[https://wiki.shibboleth.net/confluence/display/EDS10/Embedded+Discovery+Service|Shibboleth-Wiki]].
  
 === Konfiguration für den Produktivbetrieb === === Konfiguration für den Produktivbetrieb ===
Zeile 114: Zeile 189:
 <code>https://wayf.aai.dfn.de/DFN-AAI-Basic/wayf?entityID=https%3A%2F%2Fmyvhost.mydomain.de%2Fshibboleth&return=https%3A%2F%2Fmyvhost.mydpmain.de%2FShibboleth.sso%2FLogin%3FSAMLDS%3D1</code> <code>https://wayf.aai.dfn.de/DFN-AAI-Basic/wayf?entityID=https%3A%2F%2Fmyvhost.mydomain.de%2Fshibboleth&return=https%3A%2F%2Fmyvhost.mydpmain.de%2FShibboleth.sso%2FLogin%3FSAMLDS%3D1</code>
  
-Damit ist der EDS grundsátzlich einsatzbereit. Weiterführende Informationen und Konfigurationsbeispiele haben wir unter einer eigenen [[de:shibeds|Wiki-Seite]] abgelegt, die Sie aber erst brauchen wenn Sie mit Ihren SP aus der Testphase in den Produktivbetrieb übergehen. 
  
 ====Apache Webserver==== ====Apache Webserver====
Zeile 151: Zeile 225:
   Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css   Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
   #######################################################   #######################################################
- 
-   
   #   #
   # Vom SP zu schützende Location   # Vom SP zu schützende Location
Zeile 160: Zeile 232:
     ShibRequestSetting requireSession true     ShibRequestSetting requireSession true
     Require valid-user     Require valid-user
-  </Location> +  </Location>  
-  +
 </VirtualHost> </VirtualHost>
 </file> </file>
Zeile 174: Zeile 245:
   * **Zertifikate** ''CredentialResolver''   * **Zertifikate** ''CredentialResolver''
     * Siehe unter [[de:certificates|Zertifikate]]     * Siehe unter [[de:certificates|Zertifikate]]
-  * **Metadaten** (und dfn-aai.g2.pem zur Verifikation der Signatur) ''MetadataProvider''+  * **Metadaten** (und dfn-aai.pem zur Verifikation der Signatur) ''MetadataProvider''
     * Siehe unter [[de:metadata|Metadaten]] und [[de:production#metadataprovider|Produktivbetrieb]]     * Siehe unter [[de:metadata|Metadaten]] und [[de:production#metadataprovider|Produktivbetrieb]]
   * **Discovery Service** ''SSO/@discoveryURL''   * **Discovery Service** ''SSO/@discoveryURL''
Zeile 184: Zeile 255:
 </callout> </callout>
  
 +{{tag>sp}}
  • Zuletzt geändert: vor 4 Jahren