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/08 14:18] – [Shibboleth SP (3.x)] 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 =====
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 anhand bestimmter Kriterien 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 (s.u.) 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 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)+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: Nach allen Änderungen in ''shibboleth2.xml'' muss der shibd Service neu gestartet werden:
Zeile 96: Zeile 146:
  
 ==== 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 115: 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 123: 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. Weitere Hinweise und Informationen finden sich in den Kommentaren der Konfigurationsdatei(en) sowie im [[https://wiki.shibboleth.net/confluence/display/EDS10/Embedded+Discovery+Service|Shibboleth-Wiki]].+
 ====Apache Webserver==== ====Apache Webserver====
  
Zeile 159: 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 168: Zeile 232:
     ShibRequestSetting requireSession true     ShibRequestSetting requireSession true
     Require valid-user     Require valid-user
-  </Location> +  </Location>  
-  +
 </VirtualHost> </VirtualHost>
 </file> </file>
Zeile 182: 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 192: Zeile 255:
 </callout> </callout>
  
 +{{tag>sp}}
  • Zuletzt geändert: vor 4 Jahren