Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
de:shibidp-install [2020/04/06 15:42]
Silke Meyer angelegt
de:shibidp-install [2020/04/07 14:05]
Silke Meyer gelöscht
Zeile 1: Zeile 1:
-======Installation Shibboleth IdP 4.x ======+====== Installation Shibboleth IdP 4.x ======
  
 ===== IdP herunterladen ===== ===== IdP herunterladen =====
  
-Laden Sie den Shibboleth IdP herunter, prüfen Sie die Signatur und entpacken Sie das Archiv. Die aktuelle IdP-Version findet sich stets unter http://​shibboleth.net/​downloads/​identity-provider/​latest/​.+Laden Sie den Shibboleth IdP herunter, prüfen Sie die Signatur und entpacken Sie das Archiv. Die aktuelle IdP-Version findet sich stets unter http://​shibboleth.net/​downloads/​identity-provider/​latest/​. ​Es empfiehlt sich, die [[https://​wiki.shibboleth.net/​confluence/​display/​IDP4/​ReleaseNotes|Release Notes]] zu studieren. 
 <code bash> <code bash>
 root@idp:~# mkdir /​opt/​install root@idp:~# mkdir /​opt/​install
-root@idp:​~# ​cd /​opt/​install +root@idp:​~# ​wget -P /​opt/​install https://​shibboleth.net/​downloads/​identity-provider/​latest/​shibboleth-identity-provider-4.0.0.tar.gz 
-root@idp:/​opt/​install#​ wget https://​shibboleth.net/​downloads/​identity-provider/​latest/​shibboleth-identity-provider-4.0.0.tar.gz +root@idp:~# wget -P /​opt/​install https://​shibboleth.net/​downloads/​identity-provider/​latest/​shibboleth-identity-provider-4.0.0.tar.gz.asc 
-root@idp:/​opt/​install# wget https://​shibboleth.net/​downloads/​identity-provider/​latest/​shibboleth-identity-provider-4.0.0.tar.gz.asc +root@idp:~# wget -P /​opt/​install https://​shibboleth.net/​downloads/​PGP_KEYS 
-root@idp:/​opt/​install# wget https://​shibboleth.net/​downloads/​PGP_KEYS +root@idp:~# gpg --import ​/​opt/​install/​PGP_KEYS 
-root@idp:/​opt/​install# gpg --import PGP_KEYS +root@idp:~# gpg --verify ​/​opt/​install/​shibboleth-identity-provider-4.0.0.tar.gz.asc ​/​opt/​install/​shibboleth-identity-provider-4.0.0.tar.gz 
-root@idp:/​opt/​install# gpg --verify shibboleth-identity-provider-4.0.0.tar.gz.asc shibboleth-identity-provider-4.0.0.tar.gz +root@idp:~# tar -xzf /​opt/​install/​shibboleth-identity-provider-4.0.0.tar.gz ​-C /​opt/​install
-root@idp:/​opt/​install# tar -xzf shibboleth-identity-provider-4.0.0.tar.gz+
 </​code>​ </​code>​
  
-==== Interaktiven Installer aufrufen ==== +===== Interaktiven Installer aufrufen =====
- +
-<code bash> +
-root@idp:~# cd /​opt/​install/​shibboleth-identity-provider-4.0.0 +
-</​code>​+
  
-Das Installationsskript findet sich unter bin/​install.sh. Beim Ausführen werden die wichtigsten Angaben zum IdP abgefragt, wie der FQDN und das Zielverzeichnis,​ in das der IdP installiert werden soll. Der Default hierfür ist /​opt/​shibboleth-idp.+Das Installationsskript findet sich unter ''/​opt/​install/​shibboleth-identity-provider-4.0.0/​bin/​install.sh''​. Beim Ausführen werden die wichtigsten Angaben zum IdP abgefragt, wie der FQDN und das Zielverzeichnis,​ in das der IdP installiert werden soll. Der Default hierfür ist ''​/​opt/​shibboleth-idp''​.
  
 <code bash> <code bash>
-root@idp:/​opt/​install/​shibboleth-identity-provider-4.0.0# JAVA_HOME=/usr bin/​install.sh ​+root@idp:~# JAVA_HOME=/​usr ​/​opt/​install/​shibboleth-identity-provider-4.0.0/​bin/​install.sh ​
 Buildfile: /​opt/​install/​shibboleth-identity-provider-4.0.0/​bin/​build.xml Buildfile: /​opt/​install/​shibboleth-identity-provider-4.0.0/​bin/​build.xml
  
Zeile 60: Zeile 56:
 Die beiden abgefragten Passwörter werden in die IdP-Config geschrieben,​ müssen also nicht notiert oder gemerkt werden. Wählen Sie daher möglichst starke Passwörter. Der IdP wird dann im angegebenen Zielverzeichnis installiert. Die beiden abgefragten Passwörter werden in die IdP-Config geschrieben,​ müssen also nicht notiert oder gemerkt werden. Wählen Sie daher möglichst starke Passwörter. Der IdP wird dann im angegebenen Zielverzeichnis installiert.
  
-Nachdem die IdP-Files installiert sind, versucht der Tomcat, das Servlet automatisch zu starten (siehe Tomcat-Log). Das scheitert üblicherweise ​aber erstmal ​da einige Dateien für den Tomcat-User nicht lesbar abgelegt wurden. Korrigieren Sie dies mit:+===== Leserechte für Tomcat-User korrigieren ===== 
 + 
 +Nachdem die IdP-Files installiert sind, versucht der Tomcat, das Servlet automatisch zu starten (siehe Tomcat-Log). Das scheitert üblicherweise ​zunächst, ​da einige Dateien für den Tomcat-User nicht lesbar abgelegt wurden. Korrigieren Sie dies mit:
  
 <code bash> <code bash>
 root@idp:/​opt/​install/​shibboleth-identity-provider-4.0.0#​ cd /​opt/​shibboleth-idp root@idp:/​opt/​install/​shibboleth-identity-provider-4.0.0#​ cd /​opt/​shibboleth-idp
-root@idp:/​opt/​shibboleth-idp# chgrp -R $( getent group | grep ^tomcat | cut -d ":"​ -f1 ) conf credentials +root@idp:~# chgrp -R $( getent group | grep ^tomcat | cut -d ":"​ -f1 ) /​opt/​shibboleth-idp/conf /​opt/​shibboleth-idp/​credentials 
-root@idp:/​opt/​shibboleth-idp#​ chmod -R g+r conf credentials+root@idp:~# chmod -R g+r /​opt/​shibboleth-idp/​conf /​opt/​shibboleth-idp/​credentials
 </​code>​ </​code>​
  
Zeile 71: Zeile 69:
  
 <code bash> <code bash>
-root@idp:/​opt/​shibboleth-idp# chown $( getent passwd | grep ^tomcat | cut -d ":"​ -f1 ):$( getent group | grep ^tomcat | cut -d ":"​ -f1 ) logs metadata+root@idp:~# chown $( getent passwd | grep ^tomcat | cut -d ":"​ -f1 ):$( getent group | grep ^tomcat | cut -d ":"​ -f1 ) /​opt/​shibboleth-idp/​logs /​opt/​shibboleth-idp/​metadata
 </​code>​ </​code>​
  
-====IdP Status URL====+===== IdP Status URL freigeben =====
  
 Zur Darstellung der Status-Seite muss Zur Darstellung der Status-Seite muss
  
-  * die Java Standard Tag Library (JSTL) im Tomcat bereit stehen (siehe [[de:​shibidp:​prepare-tomcat#​java_server_tag_library_jstl|Vorarbeiten]]).+  * die Java Standard Tag Library (JSTL) im Tomcat bereit stehen (siehe [[de:​shibidp:​prepare-tomcat#​java_standard_tag_library_jstl|Vorarbeiten]]).
   * die IdP Status URL für Ihr eigenes Netz und das Monitoring-Netz des DFN freigegeben werden. Damit das DFN-AAI-Monitoring nur auf die Status-Seite zugreifen kann, erstellen Sie eine separates ''<​entry>''​ Element mit der id ''​StatusAccessByIPAddress'': ​   * die IdP Status URL für Ihr eigenes Netz und das Monitoring-Netz des DFN freigegeben werden. Damit das DFN-AAI-Monitoring nur auf die Status-Seite zugreifen kann, erstellen Sie eine separates ''<​entry>''​ Element mit der id ''​StatusAccessByIPAddress'': ​
  
Zeile 97: Zeile 95:
 </​beans>​ </​beans>​
 </​file>​ </​file>​
 +
 +FIXME Prüfen!
  
 Dieser Eintrag muss dann noch in ''​idp.properties''​ der Status-Seite zugewiesen werden: Dieser Eintrag muss dann noch in ''​idp.properties''​ der Status-Seite zugewiesen werden:
Zeile 103: Zeile 103:
 idp.status.accessPolicy=StatusAccessByIPAddress idp.status.accessPolicy=StatusAccessByIPAddress
 </​file>​ </​file>​
 +
 +===== Tomcat-Neustart und erster Test =====
  
 Jetzt kann Tomcat neu gestartet werden: Jetzt kann Tomcat neu gestartet werden:
 <code bash> <code bash>
-root@idp:/​opt/​shibboleth-idp# systemctl restart tomcat9+root@idp:# systemctl restart tomcat9
 </​code>​ </​code>​
 Dabei lassen Sie am besten in drei Terminalfenstern den Tomcat- und die beiden relevanten IdP-Logs mitlaufen: Dabei lassen Sie am besten in drei Terminalfenstern den Tomcat- und die beiden relevanten IdP-Logs mitlaufen:
  
 <code bash> <code bash>
-root@idp:/​opt/​shibboleth-idp# tail -f /​var/​log/​tomcat9/​catalina.out+root@idp:# tail -f /​var/​log/​tomcat9/​catalina.DATUM.log
 </​code>​ </​code>​
  
 <code bash> <code bash>
-root@idp:/​opt/​shibboleth-idp# tail -f logs/​idp-process.log+root@idp:# tail -f /​opt/​shibboleth-idp/logs/​idp-process.log
 </​code>​ </​code>​
  
 <code bash> <code bash>
-root@idp:/​opt/​shibboleth-idp# tail -f logs/​idp-warn.log+root@idp:# tail -f /​opt/​shibboleth-idp/logs/​idp-warn.log
 </​code>​ </​code>​
  
 Finden sich dort keine Fehler, ist der IdP erfolgreich gestartet. Überprüfen Sie als erstes, ob Sie die Status-Seite sehen können: Finden sich dort keine Fehler, ist der IdP erfolgreich gestartet. Überprüfen Sie als erstes, ob Sie die Status-Seite sehen können:
  
-<​code>​ +<​code ​bash
-https://​idp.hochschule-XY.de/​idp/​status+root@idp:# curl https://​idp.hochschule-XY.de/​idp/​status
 </​code>​ </​code>​
  
-===== Vorbereitung Metadaten =====+====== Vorbereitung ​der IdP-Metadaten ​======
  
-Um den Aufwand beim Eintragen der IdP-Metadaten in der DFN-AAI Metadatenverwaltung zu reduzieren, empfiehlt es sich vor dem initialen Registrieren des IdPs in ./​metadata/​idp-metadata.xml die noch fehlenden Einträge zu aktivieren. Es handelt sich dabei um IdP-Features die in der DFN-AAI empfohlen sind und deren Konfiguration ​ in diesem Wiki zu finden sind. Im Folgenden sind nur die relevanten ​Abschnitte angegben (mit "..." ist gemeint dass hier Zeilen und Abschnitte vorhanden sind, diese aber der Übersichtlichkeit halber hier nicht aufgeführt sind)Details zum Speichern und Einbindung der Logos Ihrer Einrichtung finden ​Sie [[de:​shibidp3logos|hier]].+Um den Aufwand beim Eintragen der IdP-Metadaten in der DFN-AAI Metadatenverwaltung zu reduzieren, empfiehlt es sich vor dem initialen Registrieren des IdPs in ./​metadata/​idp-metadata.xml die noch fehlenden Einträge zu aktivieren. Es handelt sich dabei um IdP-Features die in der DFN-AAI empfohlen sind und deren Konfiguration in diesem Wiki zu finden sind. Im Folgenden sind nur die relevanten ​Ausschnitte angegeben. 
 + 
 +<callout type="danger"​ title="​Einmalige Verwendung der idp-metadata.xml">​ 
 +Die Datei ''​./​metadata/​idp-metadata.xml''​ wird in der DFN-AAI ​nicht verwendet. Sie wird später weder vom IdP aktualisiert,​ noch von anderen Teilnehmern benötigtSie wird hier **ausschließlich für das initiale Einlesen in die Metadatenverwaltung** editiert und verwendet! 
 +</​callout>​
  
 <code xml ./​metadata/​idp-metadata.xml>​ <code xml ./​metadata/​idp-metadata.xml>​
 +<?xml version="​1.0"​ encoding="​UTF-8"?>​
 +<!-- In der folgenden Zeile muss das Ablaufdatum dieses Metadatensatz entfernt werden, z.B. validUntil="​2020-04-06T13:​35:​26.645Z"​. -->
 +<​EntityDescriptor ​ xmlns="​urn:​oasis:​names:​tc:​SAML:​2.0:​metadata"​ xmlns:​ds="​http://​www.w3.org/​2000/​09/​xmldsig#"​ xmlns:​shibmd="​urn:​mace:​shibboleth:​metadata:​1.0"​ xmlns:​xml="​http://​www.w3.org/​XML/​1998/​namespace"​ xmlns:​mdui="​urn:​oasis:​names:​tc:​SAML:​metadata:​ui"​ xmlns:​req-attr="​urn:​oasis:​names:​tc:​SAML:​protocol:​ext:​req-attr"​ entityID="​https://​web1.in.dfn.de/​idp/​shibboleth">​
 +
 ... ...
  
Zeile 162: Zeile 172:
         <​SingleSignOnService Binding="​urn:​oasis:​...         <​SingleSignOnService Binding="​urn:​oasis:​...
         <​SingleSignOnService Binding="​urn:​oasis:​...         <​SingleSignOnService Binding="​urn:​oasis:​...
 +        ​
         <!-- den fehlenden ECP-Endpoint hinzufügen -->         <!-- den fehlenden ECP-Endpoint hinzufügen -->
         <​SingleSignOnService Binding="​urn:​oasis:​names:​tc:​SAML:​2.0:​bindings:​SOAP"​ Location="​https://​idp.hochschule-XY.de/​idp/​profile/​SAML2/​SOAP/​ECP"/>​         <​SingleSignOnService Binding="​urn:​oasis:​names:​tc:​SAML:​2.0:​bindings:​SOAP"​ Location="​https://​idp.hochschule-XY.de/​idp/​profile/​SAML2/​SOAP/​ECP"/>​
Zeile 172: Zeile 183:
     </​IDPSSODescriptor>​     </​IDPSSODescriptor>​
     ​     ​
-    <!-- Protocol-Support für SAML2-Queries im AA-Descriptor aktivieren -->+    <!-- Protocol-Support für SAML2-Queries im Attribute Authority-Descriptor aktivieren -->
     <​AttributeAuthorityDescriptor protocolSupportEnumeration="​urn:​oasis:​names:​tc:​SAML:​1.1:​protocol urn:​oasis:​names:​tc:​SAML:​2.0:​protocol">​     <​AttributeAuthorityDescriptor protocolSupportEnumeration="​urn:​oasis:​names:​tc:​SAML:​1.1:​protocol urn:​oasis:​names:​tc:​SAML:​2.0:​protocol">​
     ​     ​
Zeile 178: Zeile 189:
         ​         ​
         <​AttributeService Binding="​urn:​oasis:​names:​tc:​SAML:​1.0:​bindings:​SOAP-binding"​ Location="​..."/>​         <​AttributeService Binding="​urn:​oasis:​names:​tc:​SAML:​1.0:​bindings:​SOAP-binding"​ Location="​..."/>​
-        <!-- SAML2-Attribute-Service ​aktivieren ​-->+        <!-- SAML2-Attribute-Service ​einkommentieren ​-->
         <​AttributeService Binding="​urn:​oasis:​names:​tc:​SAML:​2.0:​bindings:​SOAP"​ Location="​..."/>​         <​AttributeService Binding="​urn:​oasis:​names:​tc:​SAML:​2.0:​bindings:​SOAP"​ Location="​..."/>​
  
Zeile 191: Zeile 202:
 </​code>​ </​code>​
  
-Weiter geht es mit der [[de:shibidp3config|Konfiguration]].+Weiter geht es mit der [[de:shibidp:​config|Konfiguration]].