Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste ÜberarbeitungBeide Seiten der Revision |
de:shibsp [2020/04/08 14:21] – Wolfgang Pempe | de:shibsp [2022/12/15 19:26] – Wolfgang Pempe |
---|
~~NOTOC~~ | |
====== Shibboleth SP ====== | ====== Shibboleth SP ====== |
{{INLINETOC 2}} | |
| |
===== Installation und allgemeine Dokumentation ===== | ===== Installation und allgemeine Dokumentation ===== |
<!-- 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.pem"/> | <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem"/> |
</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 werden, die 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 an, welche 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> |
... | ... |
<MetadataProvider type="XML" | <MetadataProvider type="XML" |
url="http://www.aai.dfn.de/fileadmin/metadata/dfn-aai-test-metadata.xml" | url="http://www.aai.dfn.de/metadata/dfn-aai-idp-metadata.xml" |
validate="true" backingFilePath="dfn-aai-test-metadata.xml" reloadInterval="3600"> | validate="true" backingFilePath="dfn-aai-idp-metadata.xml" reloadInterval="3600"> |
<MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" /> | <MetadataFilter type="Signature" certificate="/etc/ssl/aai/dfn-aai.pem" /> |
<MetadataFilter type="Whitelist"> | <MetadataFilter type="Include"> |
<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> |
</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" /> |
| <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" /> |
| <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: |
| |
==== 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-ds/ ausgepackt 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.*$" ]; |
</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 === |
<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==== |
| |
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 |
ShibRequestSetting requireSession true | ShibRequestSetting requireSession true |
Require valid-user | Require valid-user |
</Location> | </Location> |
| |
</VirtualHost> | </VirtualHost> |
</file> | </file> |
* **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'' |
</callout> | </callout> |
| |
| {{tag>sp}} |