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 [2019/06/14 13:28] Wolfgang Pempede:shibsp [2020/04/19 10:18] Raoul Gunnar Borenius
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="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. --> 
-      <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>
 +
  • Zuletzt geändert: vor 2 Monaten