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/06/14 13:28]
Wolfgang Pempe
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 =====
-===Apache Webserver=== 
-<file apache /​etc/​apache2/​sites-enabled/​sp.example.org.conf>​ 
-<​VirtualHost SP-IP-ADRESSE:​443 [SP-IPv6-ADRESSE]:​443>​ 
-  ServerName ​             sp.example.org 
-  
-  SSLEngine on 
-  SSLCertificateFile ​     /​etc/​ssl/​localcerts/​sp.example.org.crt.pem 
-  SSLCertificateKeyFile ​  /​etc/​ssl/​private/​sp.example.org.key.pem 
-  SSLCACertificateFile ​   /​etc/​ssl/​chains/​sp.example.org.chain.pem 
  
-  ​# +**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. \\ 
-  # Zur SSL-Konfiguration siehe die Anmerkung unterhalb dieses Beispiels +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]].
-  # +
-  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"​+====Shibboleth SP (3.x)====
  
-  UseCanonicalName On+Editieren Sie die Haupt-Configdatei des SP an folgenden Stellen:
  
-  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>​ 
-    SetHandler shib 
-    Require all granted 
-  </​Location>​ 
- 
-  # Metadata unter der entityID-URL:​ 
-  Redirect seeother /shibboleth https://​sp.example.org/​Shibboleth.sso/​Metadata 
- 
-  <​Location /​shibboleth-sp>​ 
-    Require all granted 
-  </​Location>​ 
-  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 
-  # 
-  # in diesem Beispiel findet keine Autorisierung statt(!) 
-  # zu Autorisierung etc. siehe unter https://​www.switch.ch/​aai/​guides/​sp/​access-rules/​ 
-  <​Location /​secure-all>​ 
-    AuthType shibboleth 
-    ShibRequestSetting requireSession true 
-    Require valid-user 
-  </​Location>​ 
-  ​ 
-  # 
-  # Support für WAYFless-URLs 
-  # siehe https://​www.ukfederation.org.uk/​library/​uploads/​Documents/​WAYFlessGuidance.pdf 
-  # 
-  RedirectMatch /​start-session$ /​Shibboleth.sso/​Login 
-</​VirtualHost>​ 
-</​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)=== 
-Zu den Änderungen in der neuen Version 3.x siehe im Shibboleth Wiki unter [[https://​wiki.shibboleth.net/​confluence/​display/​SP3/​UpgradingFromV2|UpgradingFromV2]]. 
 <file xml /​etc/​shibboleth/​shibboleth2.xml>​ <file xml /​etc/​shibboleth/​shibboleth2.xml>​
 <​SPConfig ... > <​SPConfig ... >
   ...   ...
-  <​!-- ​die entityID des SPs --> +  <​!-- ​"​sp.example.org"​ durch den SP-Vhost-Namen ersetzen ​--> 
-  <​ApplicationDefaults entityID="​https://​sp.example.org/​shibboleth"​ ... >+  <​ApplicationDefaults entityID="​https://​myvhost.mydomain.de/​shibboleth"​ ... >
   ...   ...
-   <​!-- ​zu den Parametern vgl.  +   <​!-- ​handerSSL auf "​true"​ und cookieProps auf "https" ​-->
-   https://​wiki.shibboleth.net/​confluence/​display/​SHIB2/​NativeSPSessions ​-->+
    <​Sessions lifetime="​28800"​ timeout="​3600"​ relayState="​ss:​mem"​    <​Sessions lifetime="​28800"​ timeout="​3600"​ relayState="​ss:​mem"​
              ​checkAddress="​false"​ consistentAddress="​true"  ​              ​checkAddress="​false"​ consistentAddress="​true"  ​
-             ​handlerSSL="​true"​ cookieProps="​https">​+             ​handlerSSL="​true"​ cookieProps="​https" redirectLimit="​host">
       ...       ...
-      <​!-- ​falls ECP unterstützt werden soll, hier noch ECP="true" ​einfügen;​ +      <!-- "sp.example.org" ​durch den SP-Vhost-Namen ersetzen ​--> 
-      discoveryURL weist auf den DS für die DFN-AAI Testföderation ​--> +      <SSO discoveryProtocol="​SAMLDS"​ discoveryURL="​https://​myvhost.mydomain.de/shibboleth-ds/index.html">
-      <SSO discoveryProtocol="​SAMLDS"​ discoveryURL="​https://​wayf.aai.dfn.de/DFN-AAI-Test/wayf">+
          SAML2          SAML2
       </​SSO>​       </​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. --> 
-      <Handler type="​Status"​ Location="/​Status"​ acl="​127.0.0.1 ::​1"/>​ 
-      ... 
-      <!-- für Testzwecke ggf. "​showAttributeValues"​ *vorübergehend* auf "​true"​ setzen --> 
-      <!-- Session diagnostic service. --> 
-      <Handler type="​Session"​ Location="/​Session"​ showAttributeValues="​false"/>​ 
       ...       ...
    </​Sessions> ​          </​Sessions> ​      
Zeile 101: Zeile 40:
            ​styleSheet="/​shibboleth-sp/​main.css"/>​            ​styleSheet="/​shibboleth-sp/​main.css"/>​
    ...    ...
-   <​!-- Metadaten der Test-Föderation --> +   <​!-- Metadaten der Test-Föderation ​aktivieren --> 
-   <​MetadataProvider type="​XML" ​uri="​http://​www.aai.dfn.de/​fileadmin/​metadata/​dfn-aai-test-metadata.xml"​ +   <​!-- den Pfad zum Zertifikat zur Signaturüberprüfung den lokalen Gegebenheiten anpassen! ​--> 
-         ​backingFilePath="​dfn-aai-test-metadata.xml"​ reloadInterval="​3600">​ +   <​MetadataProvider type="​XML" ​url="​http://​www.aai.dfn.de/​fileadmin/​metadata/​dfn-aai-test-metadata.xml"​ 
-       <​MetadataFilter type="​Signature"​ certificate="/​etc/​shibboleth/dfn-aai.g2.pem"/>​+         validate="​true" ​backingFilePath="​dfn-aai-test-metadata.xml"​ reloadInterval="​3600">​ 
 +       <​MetadataFilter type="​Signature"​ certificate="/​etc/​ssl/aai/​dfn-aai.pem"/>​
    </​MetadataProvider>​    </​MetadataProvider>​
    ...    ...
    <​!-- Pfadangaben zu den Zertifikat-Dateien -->    <​!-- Pfadangaben zu den Zertifikat-Dateien -->
-   <​CredentialResolver type="​File"​ key="/​etc/​ssl/​private/​sp-key.pem"​  +   <​CredentialResolver type="​File"​ key="/​etc/​ssl/​private/​myvhost.mydomain.de.key.pem"​  
-          certificate="/​etc/​ssl/​localcerts/​sp-crt.pem"/>​+          certificate="/​etc/​ssl/​localcerts/​myvhost.mydomain.de.crt.pem"/>​
    ...    ...
   </​ApplicationDefaults>​   </​ApplicationDefaults>​
Zeile 115: Zeile 55:
 </​SPConfig>​ </​SPConfig>​
 </​file>​ </​file>​
-===== Ergänzende ​Hinweise =====+ 
 +**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==== 
 + 
 +<file apache /​etc/​apache2/​sites-enabled/​myvhost.mydomain.de.conf>​ 
 +<​VirtualHost SP-IP-ADRESSE:​443 [SP-IPv6-ADRESSE]:​443>​ 
 +  ServerName ​             myvhost.mydomain.de 
 +  SSLEngine on 
 +  SSLCertificateFile ​     /​etc/​ssl/​localcerts/​myvhost.mydomain.de.crt.pem 
 +  SSLCertificateKeyFile ​  /​etc/​ssl/​private/​myvhost.mydomain.de.key.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. 
 +  # 
 +  # Bei anderen Linuxen sind diese aber vielleicht nötig! 
 +  # 
 +  <​Location /​Shibboleth.sso>​ 
 +    AuthType None 
 +    Require all granted 
 +  </​Location>​ 
 +  <​Location /​shibboleth-sp>​ 
 +    AuthType None 
 +    Require all granted 
 +  </​Location>​ 
 +  Alias /​shibboleth-sp/​main.css /​usr/​share/​shibboleth/​main.css 
 +  #######################################################​ 
 +  # 
 +  # Vom SP zu schützende Location 
 +  # 
 +  <​Location /​secure>​ 
 +    AuthType shibboleth 
 +    ShibRequestSetting requireSession true 
 +    Require valid-user 
 +  </​Location> ​  
 +</​VirtualHost>​ 
 +</​file>​ 
 + 
 +<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">​ 
 +  * **Zu den Änderungen gegenüber der alten Version 2.x**  
 +    * Siehe im Shibboleth Wiki unter [[https://​wiki.shibboleth.net/​confluence/​display/​SP3/​UpgradingFromV2|UpgradingFromV2]].
   * **Zertifikate** ''​CredentialResolver''​   * **Zertifikate** ''​CredentialResolver''​
     * Siehe unter [[de:​certificates|Zertifikate]]     * Siehe unter [[de:​certificates|Zertifikate]]
Zeile 122: 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>​
 +
 +{{tag>​sp}}
  • Zuletzt geändert: vor 12 Monaten