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
Nächste ÜberarbeitungBeide Seiten der Revision
de:shibsp [2020/01/31 14:59] Wolfgang Pempede:shibsp [2020/04/22 13:01] 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="trueeinfügen; +      <!-- "sp.example.orgdurch 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 2 Monaten