====== Shibboleth SP ======
===== Installation und allgemeine Dokumentation =====
Siehe hierzu die betreffenden Seiten
* im [[https://wiki.shibboleth.net/confluence/display/SP3/Home|Shibboleth Wiki]] und
* 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 =====
**Vorbemerkung:** In den folgenden Beispielen wird davon ausgegangen, dass zur Einrichtungsauswahl der [[de:shibsp#shibboleth_eds_embedded_discovery_service|Shibboleth Embedded Discovery Service]] (EDS) zum Einsatz kommt (siehe unten). Ein solcher SP-seitiger Discovery Service ist in den meisten Fällen das Mittel der Wahl, da er die "User-Experience" verbessert - insbesondere in Szenarien, in denen ein SP-Betreiber die Liste für die IdP-Auswahl über bestimmte Filter modifizieren/einschränken möchte. Da dieser sehr einfach zu konfigurierenden EDS quasi als Zubehör zum Shibboleth SP mitgeliefert wird, sei er an dieser Stelle besonders empfohlen. \\
Sollten Sie aus bestimmten Gründen doch bevorzugt den zentralen, vom DFN betriebenen DS/WAYF verwenden wollen, finden Sie einige Konfigurationsbeispiele [[de:production#discovery_service|hier]].
====Shibboleth SP (3.x)====
Editieren Sie die Haupt-Configdatei des SP an folgenden Stellen:
...
...
...
SAML2
...
...
...
...
...
...
Zur MetadataProvider-Konfiguration für die Produktivumgebung der DFN-AAI siehe unter [[de:production#beispiel_sp|Produktivbetrieb]].
Achten Sie bitte unbedingt darauf, dass in **''shibboleth2.xml''** in allen **''''**-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 ''''-Element sind im [[https://shibboleth.atlassian.net/wiki/spaces/SP3/pages/2065334342/Sessions|Shibboleth-Wiki dokumentiert]].
===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 Embedded Discovery Service zeigt nur diejenigen IdPs bzw. Einrichtungen an, welche in diesen gefilterten Metadaten enthalten sind. In shibboleth2.xml muss '''' aktiv sein, bitte überprüfen sie das zur Sicherheit!).
Die Whitelist wird dann folgendermaßen konfiguriert:
...
https://idp.uni-beispiel1.de/idp/shibbolethhttps://idp.uni-beispiel2.de/idp/shibbolethhttps://idp.uni-beispiel3.de/idp/shibboleth
...
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:**
...
http://rr.aai.switch.ch/http://eduid.at
...
**Identity Provider aus zwei fiktiven Föderationen ausschließen:**
...
http://xyz.qqhttp://zyx.ww
...
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.
\\
Nach allen Änderungen in ''shibboleth2.xml'' muss der shibd Service neu gestartet werden:
Funktioniert die überarbeitete Konfiguration?
root@host:~# shibd -t
Dann ab dafür:
root@host:~# systemctl restart shibd
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:
root@host:~# systemctl restart apache2
==== Shibboleth EDS (Embedded Discovery Service)====
=== Installation ===
(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]].)
* 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:
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
\\
=== Konfiguration ===
Damit der EDS die Arbeit aus Sicherheitsgründen nicht verweigert, muss der eigene Vhost-Namen in die "Return White List" eingetragen werden:
...
this.returnWhiteList = [ "^https:\/\/meinvhost\.meinedomain\.de\/Shibboleth\.sso\/Login.*$" ];
...
Achten Sie auf die korrekte Syntax, der Eintrag muss in Form einer Regular Expression gemacht werden!
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 ===
* das Layout des EDS muss in /etc/shibboleth-ds/index.html angepasst werden, in der die JavaScript-Aufrufe eingebettet werden, siehe hierzu die Kommentare in dieser Datei.
* Für das