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/01/31 14:59]
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/​SP3/​Home|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 +TLSv1.2 +TLSv1.3 +
-  SSLHonorCipherOrder Off +
-  SSLCompression Off +
-  SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:​ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:​ECDHE-RSA-AES256-GCM-SHA384:​ECDHE-ECDSA-CHACHA20-POLY1305:​ECDHE-RSA-CHACHA20-POLY1305:​DHE-RSA-AES128-GCM-SHA256:​DHE-RSA-AES256-GCM-SHA384 +
-  SSLCipherSuite TLSv1.3 TLS_AES_256_GCM_SHA384:​TLS_CHACHA20_POLY1305_SHA256:​TLS_AES_128_GCM_SHA256 +
-   +
-  Header always set Strict-Transport-Security "​max-age=31536000;​ includeSubDomains"​+
  
-  UseCanonicalName On+====Shibboleth SP (3.x)====
  
-  AddDefaultCharset UTF-+Editieren Sie die Haupt-Configdatei des SP an folgenden Stellen:
-  +
-  # 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://​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. 
-====Shibboleth SP (3.x)==== 
-<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''​ 
-    * Siehe unter [[de:​certificates|Zertifikate]] 
-  * **Metadaten** (und dfn-aai.g2.pem zur Verifikation der Signatur) ''​MetadataProvider''​ 
-    * Siehe unter [[de:​metadata|Metadaten]] und [[de:​production#​metadataprovider|Produktivbetrieb]] 
-  * **Discovery Service** ''​SSO/​@discoveryURL''​ 
-    * Siehe unter [[de:​discovery|Discovery]] und [[de:​production#​discovery_service|Produktivbetrieb]] 
-</​callout>​ 
 <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 ​--> 
-  <!-- siehe unter https://​wiki.shibboleth.net/​confluence/​display/​SP3/​ApplicationDefaults ​--> +  <​ApplicationDefaults entityID="​https://​myvhost.mydomain.de/​shibboleth"​ ... >
-  <​ApplicationDefaults entityID="​https://​sp.example.org/​shibboleth"​ ... >+
   ...   ...
-   <​!-- ​zu den Parametern vgl.  +   <​!-- ​handerSSL auf "​true"​ und cookieProps auf "https" ​-->
-   https://​wiki.shibboleth.net/​confluence/​display/​SP3/​Sessions ​-->+
    <​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"​ redirectLimit="​host">​              ​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, 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> ​          </​Sessions> ​      
Zeile 112: Zeile 40:
            ​styleSheet="/​shibboleth-sp/​main.css"/>​            ​styleSheet="/​shibboleth-sp/​main.css"/>​
    ...    ...
-   <​!-- Metadaten der Test-Föderation -->+   <​!-- 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/​fileadmin/​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/​shibboleth/dfn-aai.g2.pem"/>​+       <​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 128: Zeile 56:
 </​file>​ </​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====
 +
 +<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''​
 +    * Siehe unter [[de:​certificates|Zertifikate]]
 +  * **Metadaten** (und dfn-aai.g2.pem zur Verifikation der Signatur) ''​MetadataProvider''​
 +    * Siehe unter [[de:​metadata|Metadaten]] und [[de:​production#​metadataprovider|Produktivbetrieb]]
 +  * **Discovery Service** ''​SSO/​@discoveryURL''​
 +    * 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 5 Monaten