Zeige QuelltextÄltere VersionenLinks hierherNach oben Letzte ÄnderungenPer E-Mail sendenDruckenPermalink × Inhaltsverzeichnis Installation Shibboleth IdP 4.x IdP herunterladen Wahl der Entity ID Interaktiven Installer aufrufen Leserechte für Tomcat-User korrigieren IdP Status URL freigeben Tomcat-Neustart und erster Test Vorbereitung der IdP-Metadaten ← Vorarbeiten: Webserver Start IdP-Konfiguration → Installation Shibboleth IdP 4.x 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 https://shibboleth.net/downloads/identity-provider/latest/. Es empfiehlt sich, die Release Notes zu studieren. root@idp:~# mkdir /opt/install root@idp:~# wget -P /opt/install https://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-4.x.x.tar.gz root@idp:~# wget -P /opt/install https://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-4.x.x.tar.gz.asc root@idp:~# wget -P /opt/install https://shibboleth.net/downloads/PGP_KEYS root@idp:~# gpg --import /opt/install/PGP_KEYS root@idp:~# gpg --verify /opt/install/shibboleth-identity-provider-4.x.x.tar.gz.asc /opt/install/shibboleth-identity-provider-4.x.x.tar.gz root@idp:~# tar -xzf /opt/install/shibboleth-identity-provider-4.x.x.tar.gz -C /opt/install Wahl der Entity ID Die Entity ID ist der global eindeutige Identifier Ihres IdP. Sie sollte sich später möglichst nie wieder ändern. Bei der Installation generiert der Installer sie automatisch anhand des Hostnames nach dem Schema https://example.org/idp/shibboleth. Die Entity ID muss von Typ URI sein und ihre Heimateinrichtung muss die Rechte an der verwendeten Domain besitzen. Sie muss jedoch nicht mit dem aktuellen virtuellen Host übereinstimmen. Sie können sie vor Inbetriebnahme des IdP in der Datei conf/idp.properties auch noch anpassen. Wählen Sie eine Entity ID, die möglichst langlebig und versionsunabängig ist. Oft verwendet werden: https://idp.example.org/idp/shibboleth https://login.example.org/idp/shibboleth Nicht zu empfehlen sind Werte, die die IdP-Version enthalten, z.B. https://idp4.example.org/idp/shibboleth, da die Entity ID dann erfahrungsgemäß oft nach ein paar Jahren doch geändert werden soll (obwohl Nutzer*innen Ihres IdP sie nicht zu sehen bekommen). Sie können auch bei der Entity ID https://idp.example.org/idp/shibboleth einen VHost namens idp4.example.org verwenden. Dies wird über die Webserver-Konfiguration bzw. die IdP-Metadaten bekannt gemacht. Interaktiven Installer aufrufen Das Installationsskript findet sich unter /opt/install/shibboleth-identity-provider-4.x.x/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. root@idp:~# JAVA_HOME=/usr /opt/install/shibboleth-identity-provider-4.x.x/bin/install.sh Buildfile: /opt/install/shibboleth-identity-provider-4.x.x/bin/build.xml install: Source (Distribution) Directory (press <enter> to accept default): [/opt/install/shibboleth-identity-provider-4.x.x] ? Installation Directory: [/opt/shibboleth-idp] ? INFO [net.shibboleth.idp.installer.V4Install:151] - New Install. Version: 4.x.x Host Name: [192.168.0.5] ? idp-dev.hochschule-XY.de INFO [net.shibboleth.idp.installer.V4Install:549] - Creating idp-signing, CN = idp-dev.hochschule-XY.de URI = https://idp-dev.hochschule-XY.de/idp/shibboleth, keySize=3072 INFO [net.shibboleth.idp.installer.V4Install:549] - Creating idp-encryption, CN = idp-dev.hochschule-XY.de URI = https://idp-dev.hochschule-XY.de/idp/shibboleth, keySize=3072 Backchannel PKCS12 Password: Re-enter password: INFO [net.shibboleth.idp.installer.V4Install:592] - Creating backchannel keystore, CN = idp-dev.hochschule-XY.de URI = https://idp-dev.hochschule-XY.de/idp/shibboleth, keySize=3072 Cookie Encryption Key Password: Re-enter password: INFO [net.shibboleth.idp.installer.V4Install:633] - Creating backchannel keystore, CN = idp-dev.hochschule-XY.de URI = https://idp-dev.hochschule-XY.de/idp/shibboleth, keySize=3072 INFO [net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool:166] - No existing versioning property, initializing... SAML EntityID: [https://idp-dev.hochschule-XY.de/idp/shibboleth] ? Attribute Scope: [hochschule-XY.de] ? INFO [net.shibboleth.idp.installer.V4Install:433] - Creating Metadata to /opt/shibboleth-idp/metadata/idp-metadata.xml INFO [net.shibboleth.idp.installer.BuildWar:71] - Rebuilding /opt/shibboleth-idp/war/idp.war, Version 4.x.x INFO [net.shibboleth.idp.installer.BuildWar:80] - Initial populate from /opt/shibboleth-idp/dist/webapp to /opt/shibboleth-idp/webpapp.tmp INFO [net.shibboleth.idp.installer.BuildWar:89] - Overlay from /opt/shibboleth-idp/edit-webapp to /opt/shibboleth-idp/webpapp.tmp INFO [net.shibboleth.idp.installer.BuildWar:94] - Creating war file /opt/shibboleth-idp/war/idp.war BUILD SUCCESSFUL Total time: 52 seconds 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. 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: root@idp:~# chgrp -R $( getent group | grep ^tomcat | cut -d ":" -f1 ) /opt/shibboleth-idp/conf /opt/shibboleth-idp/credentials root@idp:~# chmod -R g+r /opt/shibboleth-idp/conf /opt/shibboleth-idp/credentials Außerdem müssen Log-Verzeichnis und Metadata-Verzeichnis für den Tomcat-User schreibbar gemacht werden: 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 IdP Status URL freigeben DFN-MonitoringDas Monitoring-System des DFN-Vereins prüft standardmäßig die Status-Seite Ihres IdP und die Gültigkeitsdauer der SSL-Zertifikate im Webserver. Bitte geben Sie dafür die IdP-Status-Seite frei, wie hier beschrieben. Zur Darstellung der Status-Seite muss die Java Standard Tag Library (JSTL) im Tomcat bereit stehen (siehe 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: /opt/shibboleth-idp/conf/access-control.xml <beans ...> <!-- ... --> <util:map id="shibboleth.AccessControlPolicies"> <entry key="AccessByIPAddress"> <bean parent="shibboleth.IPRangeAccessControl" p:allowedRanges="#{ {'127.0.0.1/32', '::1/128', 'IHR-NETZ/IHRE-NETZMASKE'} }" /> </entry> <entry key="StatusAccessByIPAddress"> <bean parent="shibboleth.IPRangeAccessControl" p:allowedRanges="#{ {'127.0.0.1/32', '::1/128', 'IHR-NETZ/IHRE-NETZMASKE', '193.174.247.0/24', '194.95.243.0/24', '194.95.244.0/24', '194.95.242.0/24', '2001:638:206:1::/64'} }" /> </entry> </util:map> <!-- ... --> </beans> Dieser Eintrag muss dann noch in conf/admin/admin.properties der Status-Seite zugewiesen werden: ./conf/admin/admin.properties idp.status.accessPolicy=StatusAccessByIPAddress Tomcat-Neustart und erster Test Jetzt kann Tomcat neu gestartet werden: root@idp:# systemctl restart tomcat9 Dabei lassen Sie am besten in drei Terminalfenstern den Tomcat- und die beiden relevanten IdP-Logs mitlaufen: root@idp:# tail -f /var/log/tomcat9/catalina.DATUM.log /var/log/tomcat9/localhost.DATUM.log root@idp:# tail -f /opt/shibboleth-idp/logs/idp-process.log root@idp:# tail -f /opt/shibboleth-idp/logs/idp-warn.log Finden sich dort keine Fehler, ist der IdP erfolgreich gestartet. Überprüfen Sie, ob Sie die Status-Seite sehen können: root@idp:# curl https://idp.hochschule-XY.de/idp/status Vorbereitung der IdP-Metadaten Einmalige Verwendung der idp-metadata.xmlDie 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ötigt. Sie wird hier ausschließlich für das initiale Einlesen in die Metadatenverwaltung editiert und verwendet! Die Metadatenverwaltung der DFN-AAI kann die Metadaten Ihres IdP einlesen. Das verringert den Aufwand beim Eintragen der IdP-Metadaten. Wir empfehlen, vor dem initialen Registrieren des IdPs in ./metadata/idp-metadata.xml die fehlenden Einträge zu aktivieren, damit die Felder in der Metadatenverwaltung ausgefüllt werden können. Im Folgenden sind nur die relevanten Ausschnitte angegeben: ./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://idp.hochschule-XY.de/idp/shibboleth"> ... <!-- Beschreibung und Logo aktivieren --> <Extensions> <shibmd:Scope regexp="false">hochschule-XY.de</shibmd:Scope> <mdui:UIInfo> <mdui:DisplayName xml:lang="en">XY University (Development)</mdui:DisplayName> <mdui:DisplayName xml:lang="de">Hochschule XY (Development)</mdui:DisplayName> <mdui:Description xml:lang="en">Identity Provider of XY University</mdui:Description> <mdui:Description xml:lang="de">Identity Provider der Hochschule XY</mdui:Description> <mdui:Logo height="16" width="16">https://idp-dev.hochschule-XY.de/favicon.ico</mdui:Logo> <mdui:Logo height="80" width="80">https://idp-dev.hochschule-XY.de/idp/images/logo.png</mdui:Logo> </mdui:UIInfo> </Extensions> ... <ArtifactResolutionService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="..."/> <!-- vier Single-Logout-Services aktiveren --> <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="..."/> <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="..."/> <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign" Location="..."/> <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="..."/> <SingleSignOnService Binding="urn:mace:... <SingleSignOnService Binding="urn:oasis:... <SingleSignOnService Binding="urn:oasis:... <SingleSignOnService Binding="urn:oasis:... <!-- 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"/> ... </IDPSSODescriptor> <!-- Protocol-Support für SAML2-Queries im Attribute Authority-Descriptor aktivieren --> <AttributeAuthorityDescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> ... <!-- SAML2-Attribute-Service einkommentieren --> <AttributeService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="..."/> </AttributeAuthorityDescriptor> </EntityDescriptor> idp4, tutorial, included-in-ansible ← Vorarbeiten: Webserver Überblick: Tutorial zur IdP-Inbetriebnahme Start IdP-Konfiguration → idp4 tutorial included-in-ansible Zuletzt geändert: vor 5 Monaten Anmelden