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 [2019/08/15 13:06]
Wolfgang Pempe [Shibboleth SP (2.5 / 2.6)]
de:shibsp [2020/04/22 13:01] (aktuell)
Silke Meyer
Zeile 1: Zeile 1:
 +~~NOTOC~~
 ====== Shibboleth SP ====== ====== Shibboleth SP ======
-  * Grundlegende ​Dokumentation im [[https://​wiki.shibboleth.net/​confluence/​display/​SHIB2/NativeSPConfiguration|Shibboleth Wiki]] +{{INLINETOC 2}} 
-  * Installations- und Konfigurationsanleitungen der [[https://​www.switch.ch/​aai/​guides/​sp/​|SWITCHaai]]+ 
-    * [[https://​www.switch.ch/​aai/​guides/​sp/​installation/​|Installation]] +===== Installation und allgemeine ​Dokumentation ​===== 
-    * [[https://​www.switch.ch/​aai/​guides/​sp/​access-rules/​|Access ​Control]]+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 ===== ===== 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:
 +
 +<file xml /​etc/​shibboleth/​shibboleth2.xml>​
 +<​SPConfig ... >
 +  ...
 +  <!-- "​sp.example.org"​ durch den SP-Vhost-Namen ersetzen -->
 +  <​ApplicationDefaults entityID="​https://​myvhost.mydomain.de/​shibboleth"​ ... >
 +  ...
 +   <​!-- handerSSL auf "​true"​ und cookieProps auf "​https"​ -->
 +   <​Sessions lifetime="​28800"​ timeout="​3600"​ relayState="​ss:​mem"​
 +             ​checkAddress="​false"​ consistentAddress="​true"  ​
 +             ​handlerSSL="​true"​ cookieProps="​https"​ redirectLimit="​host">​
 +      ...
 +      <!-- "​sp.example.org"​ durch den SP-Vhost-Namen ersetzen -->
 +      <SSO discoveryProtocol="​SAMLDS"​ discoveryURL="​https://​myvhost.mydomain.de/​shibboleth-ds/​index.html">​
 +         SAML2
 +      </​SSO>​
 +      ...
 +   </​Sessions> ​      
 +   ...
 +   <​!-- valide (Admin-/​Hotline-) eMail-Adresse und korrekte URLs/Pfade einfügen-->​
 +   <​Errors supportContact="​helpdesk@example.org"​
 +           ​helpLocation="/​about.html"​
 +           ​styleSheet="/​shibboleth-sp/​main.css"/>​
 +   ...
 +   <​!-- Metadaten der Test-Föderation aktivieren -->
 +   <​!-- 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"​
 +         ​validate="​true"​ backingFilePath="​dfn-aai-test-metadata.xml"​ reloadInterval="​3600">​
 +       <​MetadataFilter type="​Signature"​ certificate="/​etc/​ssl/​aai/​dfn-aai.pem"/>​
 +   </​MetadataProvider>​
 +   ...
 +   <​!-- Pfadangaben zu den Zertifikat-Dateien -->
 +   <​CredentialResolver type="​File"​ key="/​etc/​ssl/​private/​myvhost.mydomain.de.key.pem" ​
 +          certificate="/​etc/​ssl/​localcerts/​myvhost.mydomain.de.crt.pem"/>​
 +   ...
 +  </​ApplicationDefaults>​
 +  ...
 +</​SPConfig>​
 +</​file>​
 +
 +**Filtermechanismen**
 +
 +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:
 +  - 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'''​
 +Im folgenden ein Beispiel für eine **Whitelist**:​
 +
 +<file xml /​etc/​shibboleth/​shibboleth2.xml>​
 +
 +...
 +   <​MetadataProvider type="​XML" ​
 +         ​url="​http://​www.aai.dfn.de/​fileadmin/​metadata/​dfn-aai-basic-metadata.xml"​
 +         ​validate="​true"​ backingFilePath="​dfn-aai-basic-metadata.xml"​ reloadInterval="​3600">​
 +      <​MetadataFilter type="​Signature"​ certificate="/​etc/​ssl/​aai/​dfn-aai.pem"​ />
 +      <​MetadataFilter type="​Whitelist">​
 +         <​Include>​https://​idp.uni-beispiel1.de/​idp/​shibboleth</​Include>​
 +         <​Include>​https://​idp.uni-beispiel2.de/​idp/​shibboleth</​Include>​
 +         <​Include>​https://​idp.uni-beispiel3.de/​idp/​shibboleth</​Include>​
 +      </​MetadataFilter>​
 +   </​MetadataProvider>​
 +   ...
 +
 +</​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)
 +
 +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>​
 +
 +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)====
 +
 +=== Installation ===
 +
 +Siehe hierzu die betreffende [[https://​wiki.shibboleth.net/​confluence/​display/​EDS10/​2.+Installation|Seite 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:
 +
 +<​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 ===
 +Damit der EDS die Arbeit aus Sicherheitsgründen nicht verweigert, muss der eigene Vhost-Namen in die "​Return White List" eingetragen werden:
 +
 +<file javascript /​etc/​shibboleth-ds/​idpselect_config.js>​
 +  ...
 +  this.returnWhiteList = [ "​^https:​\/​\/​meinvhost\.meinedomain\.de\/​Shibboleth\.sso\/​Login.*$"​ ];
 +  ...
 +</​file>​
 +<wrap warning>​Achten Sie auf die korrekte Syntax, der Eintrag muss in Form einer Regular Expression gemacht werden!</​wrap>​
 +
 +\\
 +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 <​noscript>​-Element empfiehlt sich der Link auf einen zentralen WAYF/DS, z.B.
 +<​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>​
 +
 +
 ====Apache Webserver==== ====Apache Webserver====
-<file apache /​etc/​apache2/​sites-enabled/​sp.example.org.conf>+ 
 +<file apache /​etc/​apache2/​sites-enabled/​myvhost.mydomain.de.conf>
 <​VirtualHost SP-IP-ADRESSE:​443 [SP-IPv6-ADRESSE]:​443>​ <​VirtualHost SP-IP-ADRESSE:​443 [SP-IPv6-ADRESSE]:​443>​
-  ServerName ​             ​sp.example.org +  ServerName ​             ​myvhost.mydomain.de
- +
   SSLEngine on   SSLEngine on
-  SSLCertificateFile ​     /​etc/​ssl/​localcerts/​sp.example.org.crt.pem +  SSLCertificateFile ​     /​etc/​ssl/​localcerts/​myvhost.mydomain.de.crt.pem 
-  SSLCertificateKeyFile ​  /​etc/​ssl/​private/​sp.example.org.key.pem +  SSLCertificateKeyFile ​  /​etc/​ssl/​private/​myvhost.mydomain.de.key.pem
-  SSLCACertificateFile ​   /​etc/​ssl/​chains/​sp.example.org.chain.pem+
  
 +  # siehe https://​wiki.shibboleth.net/​confluence/​display/​SHIB2/​NativeSPApacheConfig
 +  UseCanonicalName On
 +  # EDS einbinden
 +  Include /​etc/​shibboleth-ds/​shibboleth-ds.conf
 + 
 +  # einige SAML/​AAI-Conventionen befolgen:
 +  Redirect seeother /shibboleth https://​myvhost.mydomain.de/​Shibboleth.sso/​Metadata
 +  RedirectMatch /​start-session$ /​Shibboleth.sso/​Login
 +
 +  #######################################################​
 +  # Dieser Block kann unter Debian/​Ubuntu weggelassen
 +  # werden, da die Anweisungen automatisch beim Laden
 +  # des Moduls aktiv werden.
   #   #
-  # Zur SSL-Konfiguration siehe die Anmerkung unterhalb dieses Beispiels+  # Bei anderen Linuxen sind diese aber vielleicht nötig!
   #   #
-  SSLProtocol All -SSLv2 -SSLv3 
-  SSLHonorCipherOrder On 
-  SSLCompression off 
-  SSLCipherSuite '​EDH+CAMELLIA:​EDH+aRSA:​EECDH+aRSA+AESGCM:​EECDH+aRSA+SHA384:​EECDH+aRSA+SHA256:​EECDH:​+CAMELLIA256:​+AES256:​+CAMELLIA128:​+AES128:​+SSLv3:​!aNULL:​!eNULL:​!LOW:​!3DES:​!MD5:​!EXP:​!PSK:​!DSS:​!RC4:​!SEED:​!ECDSA:​CAMELLIA256-SHA:​AES256-SHA:​CAMELLIA128-SHA:​AES128-SHA'​ 
- 
-  Header always set Strict-Transport-Security "​max-age=31536000;​ includeSubDomains"​ 
- 
-  UseCanonicalName On 
- 
-  AddDefaultCharset UTF-8 
-  
-  # dieser Alias wird i.d.R. nur benötigt, wenn URL Rewrite o.ä, erfolgt 
-  # Alias /​Shibboleth.sso /​Shibboleth.sso 
   <​Location /​Shibboleth.sso>​   <​Location /​Shibboleth.sso>​
-    ​SetHandler shib+    ​AuthType None
     Require all granted     Require all granted
   </​Location>​   </​Location>​
- 
-  # Metadata unter der entityID-URL:​ 
-  Redirect seeother /shibboleth https://​sp.example.org/​Shibboleth.sso/​Metadata 
- 
   <​Location /​shibboleth-sp>​   <​Location /​shibboleth-sp>​
 +    AuthType None
     Require all granted     Require all granted
   </​Location>​   </​Location>​
   Alias /​shibboleth-sp/​main.css /​usr/​share/​shibboleth/​main.css   Alias /​shibboleth-sp/​main.css /​usr/​share/​shibboleth/​main.css
-  ​Alias /​shibboleth-sp/​logo.jpg /​usr/​share/​shibboleth/​logo.jpg +  ​#######################################################​
-  ​+
   #   #
   # Vom SP zu schützende Location   # Vom SP zu schützende Location
   #   #
-  ​# in diesem Beispiel findet keine Autorisierung statt(!) +  <​Location /secure>
-  # zu Autorisierung etc. siehe unter https://​www.switch.ch/​aai/​guides/​sp/​access-rules/​ +
-  ​<​Location /secure-all>+
     AuthType shibboleth     AuthType shibboleth
     ShibRequestSetting requireSession true     ShibRequestSetting requireSession true
     Require valid-user     Require valid-user
-  </​Location>​ +  </​Location>  ​
-   +
-  # +
-  # Support für WAYFless-URLs +
-  # siehe https://​www.ukfederation.org.uk/​library/​uploads/​Documents/​WAYFlessGuidance.pdf +
-  # +
-  RedirectMatch /​start-session$ /​Shibboleth.sso/​Login+
 </​VirtualHost>​ </​VirtualHost>​
 </​file>​ </​file>​
-Um sicherzustellen,​ dass die Webserver-Konfiguration den aktuellen Sicherheitsstandards entspricht, informieren Sie sich bitte z.B. bei [[https://bettercrypto.org/|BetterCrypto.org]], dem [[https://​www.dfn-cert.de/​|DFN-CERT]],​ der [[https://​blog.pki.dfn.de/​|DFN-PKI]] oder [[https://​www.ssllabs.com/​|SSL LABS]]. Das letztgenannte Portal bietet auch einen Online-Test der Webserver-Konfiguration an. + 
-====Shibboleth SP (2.5 / 2.6)====+<code bash>​root@host:​~#​ systemctl reload apache2</​code>​ 
 + 
 +Um sicherzustellen,​ dass die Webserver-Konfiguration den aktuellen Sicherheitsstandards entspricht, informieren Sie sich bitte z.B. bei [[https://ssl-config.mozilla.org/|Mozilla]], dem [[https://​www.dfn-cert.de/​|DFN-CERT]],​ der [[https://​blog.pki.dfn.de/​|DFN-PKI]] oder [[https://​www.ssllabs.com/​|SSL LABS]]. Das letztgenannte Portal bietet auch einen Online-Test der Webserver-Konfiguration an. 
 <callout type="​primary"​ title="​Ergänzende Hinweise">​ <callout type="​primary"​ title="​Ergänzende Hinweise">​
-  * **Zu den Änderungen ​in der neuen Version ​3.x** +  * **Zu den Änderungen ​gegenüber ​der alten Version ​2.x** 
     * Siehe im Shibboleth Wiki unter [[https://​wiki.shibboleth.net/​confluence/​display/​SP3/​UpgradingFromV2|UpgradingFromV2]].     * Siehe im Shibboleth Wiki unter [[https://​wiki.shibboleth.net/​confluence/​display/​SP3/​UpgradingFromV2|UpgradingFromV2]].
   * **Zertifikate** ''​CredentialResolver''​   * **Zertifikate** ''​CredentialResolver''​
Zeile 75: Zeile 194:
   * **Discovery Service** ''​SSO/​@discoveryURL''​   * **Discovery Service** ''​SSO/​@discoveryURL''​
     * Siehe unter [[de:​discovery|Discovery]] und [[de:​production#​discovery_service|Produktivbetrieb]]     * Siehe unter [[de:​discovery|Discovery]] und [[de:​production#​discovery_service|Produktivbetrieb]]
 +  * Grundlegende Dokumentation im [[https://​wiki.shibboleth.net/​confluence/​display/​SP3/​Home|Shibboleth Wiki]]
 +  * Installations- und Konfigurationsanleitungen der [[https://​www.switch.ch/​aai/​guides/​sp/​|SWITCHaai]]:​
 +    * [[https://​www.switch.ch/​aai/​guides/​sp/​installation/​|Installation]]
 +    * [[https://​www.switch.ch/​aai/​guides/​sp/​access-rules/​|Access Control]]
 </​callout>​ </​callout>​
-<file xml /​etc/​shibboleth/​shibboleth2.xml>​ 
-<​SPConfig ... > 
-  ... 
-  <!-- die entityID des SPs --> 
-  <​ApplicationDefaults entityID="​https://​sp.example.org/​shibboleth"​ ... > 
-  ... 
-   <​!-- zu den Parametern vgl.  
-   ​https://​wiki.shibboleth.net/​confluence/​display/​SHIB2/​NativeSPSessions --> 
-   <​Sessions lifetime="​28800"​ timeout="​3600"​ relayState="​ss:​mem"​ 
-             ​checkAddress="​false"​ consistentAddress="​true"  ​ 
-             ​handlerSSL="​true"​ cookieProps="​https">​ 
-      ... 
-      <!-- falls ECP unterstützt werden soll, hier noch ECP="​true"​ einfügen; 
-      discoveryURL weist auf den DS für die DFN-AAI Testföderation --> 
-      <SSO discoveryProtocol="​SAMLDS"​ discoveryURL="​https://​wayf.aai.dfn.de/​DFN-AAI-Test/​wayf">​ 
-         SAML2 
-      </​SSO>​ 
-      <!-- SAML and local-only logout. --> 
-      <​Logout>​SAML2 Local</​Logout>​ 
-      <!-- für Testzwecke kann *vorübergehend* die IP-Adresse des Arbeitsplatzrechners hinzugefügt werden --> 
-      <!-- Status reporting service, bitte auch für das DFN-Monitoring freigeben ​ --> 
-      <Handler type="​Status"​ Location="/​Status"​ acl="​127.0.0.1 193.174.247.0/​24 ::1 2001:​638:​206:​1::/​64"/>​ 
-      ... 
-      <!-- für Testzwecke ggf. "​showAttributeValues"​ *vorübergehend* auf "​true"​ setzen --> 
-      <!-- Session diagnostic service. --> 
-      <Handler type="​Session"​ Location="/​Session"​ showAttributeValues="​false"/>​ 
-      ... 
-   </​Sessions> ​       
-   ... 
-   <​!-- valide (Admin-/​Hotline-) eMail-Adresse und korrekte URLs/Pfade einfügen-->​ 
-   <​Errors supportContact="​helpdesk@example.org"​ 
-           ​helpLocation="/​about.html"​ 
-           ​styleSheet="/​shibboleth-sp/​main.css"/>​ 
-   ... 
-   <​!-- Metadaten der Test-Föderation --> 
-   <​MetadataProvider type="​XML"​ uri="​http://​www.aai.dfn.de/​fileadmin/​metadata/​dfn-aai-test-metadata.xml"​ 
-         ​backingFilePath="​dfn-aai-test-metadata.xml"​ reloadInterval="​3600">​ 
-       <​MetadataFilter type="​Signature"​ certificate="/​etc/​shibboleth/​dfn-aai.g2.pem"/>​ 
-   </​MetadataProvider>​ 
-   ... 
-   <​!-- Pfadangaben zu den Zertifikat-Dateien --> 
-   <​CredentialResolver type="​File"​ key="/​etc/​ssl/​private/​sp-key.pem" ​ 
-          certificate="/​etc/​ssl/​localcerts/​sp-crt.pem"/>​ 
-   ... 
-  </​ApplicationDefaults>​ 
-  ... 
-</​SPConfig>​ 
-</​file>​ 
  
 +{{tag>​sp}}
  • Zuletzt geändert: vor 14 Monaten