Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
de:shibidp-install [2020/04/06 15:45] – Silke Meyer | de:shibidp-install [2020/04/07 14:05] (aktuell) – gelöscht Silke Meyer |
---|
====== 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 http://shibboleth.net/downloads/identity-provider/latest/. | |
<code bash> | |
root@idp:~# mkdir /opt/install | |
root@idp:~# cd /opt/install | |
root@idp:/opt/install# wget 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.asc | |
root@idp:/opt/install# wget https://shibboleth.net/downloads/PGP_KEYS | |
root@idp:/opt/install# gpg --import PGP_KEYS | |
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:/opt/install# tar -xzf shibboleth-identity-provider-4.0.0.tar.gz | |
</code> | |
| |
===== 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. | |
| |
<code bash> | |
root@idp:/opt/install/shibboleth-identity-provider-4.0.0# JAVA_HOME=/usr bin/install.sh | |
Buildfile: /opt/install/shibboleth-identity-provider-4.0.0/bin/build.xml | |
| |
install: | |
Source (Distribution) Directory (press <enter> to accept default): [/opt/install/shibboleth-identity-provider-4.0.0] ? | |
| |
Installation Directory: [/opt/shibboleth-idp] ? | |
| |
INFO [net.shibboleth.idp.installer.V4Install:151] - New Install. Version: 4.0.0 | |
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.0.0 | |
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 | |
</code> | |
| |
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 aber erstmal da einige Dateien für den Tomcat-User nicht lesbar abgelegt wurden. Korrigieren Sie dies mit: | |
| |
<code bash> | |
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:/opt/shibboleth-idp# chmod -R g+r conf credentials | |
</code> | |
| |
Außerdem müssen Log-Verzeichnis und Metadata-Verzeichnis für den Tomcat-User schreibbar gemacht werden: | |
| |
<code bash> | |
root@idp:/opt/shibboleth-idp# chown $( getent passwd | grep ^tomcat | cut -d ":" -f1 ):$( getent group | grep ^tomcat | cut -d ":" -f1 ) logs metadata | |
</code> | |
| |
===== IdP Status URL freigeben ===== | |
| |
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 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'': | |
| |
<file xml /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', '2001:638:206:1::/64'} }" /> | |
</entry> | |
</util:map> | |
<!-- ... --> | |
</beans> | |
</file> | |
| |
Dieser Eintrag muss dann noch in ''idp.properties'' der Status-Seite zugewiesen werden: | |
| |
<file properties ./conf/idp.properties> | |
idp.status.accessPolicy=StatusAccessByIPAddress | |
</file> | |
| |
===== Tomcat-Neustart und erster Test ===== | |
| |
Jetzt kann Tomcat neu gestartet werden: | |
<code bash> | |
root@idp:/opt/shibboleth-idp# systemctl restart tomcat9 | |
</code> | |
Dabei lassen Sie am besten in drei Terminalfenstern den Tomcat- und die beiden relevanten IdP-Logs mitlaufen: | |
| |
<code bash> | |
root@idp:/opt/shibboleth-idp# tail -f /var/log/tomcat9/catalina.out | |
</code> | |
| |
<code bash> | |
root@idp:/opt/shibboleth-idp# tail -f logs/idp-process.log | |
</code> | |
| |
<code bash> | |
root@idp:/opt/shibboleth-idp# tail -f logs/idp-warn.log | |
</code> | |
| |
Finden sich dort keine Fehler, ist der IdP erfolgreich gestartet. Überprüfen Sie als erstes, ob Sie die Status-Seite sehen können: | |
| |
<code> | |
curl https://idp.hochschule-XY.de/idp/status | |
</code> | |
| |
====== 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 Ausschnitte angegeben. | |
| |
<code xml ./metadata/idp-metadata.xml> | |
... | |
| |
<!-- 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"/> | |
| |
<!-- die fehlenden NameID-Formate hinzufügen --> | |
<NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat> | |
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat> | |
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</NameIDFormat> | |
... | |
</IDPSSODescriptor> | |
| |
<!-- Protocol-Support für SAML2-Queries im AA-Descriptor aktivieren --> | |
<AttributeAuthorityDescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:2.0:protocol"> | |
| |
... | |
| |
<AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding" Location="..."/> | |
<!-- SAML2-Attribute-Service aktivieren --> | |
<AttributeService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="..."/> | |
| |
<!-- die fehlenden NameID-Formate hinzufügen --> | |
<NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat> | |
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat> | |
<NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</NameIDFormat> | |
| |
</AttributeAuthorityDescriptor> | |
| |
</EntityDescriptor> | |
</code> | |
| |
Weiter geht es mit der [[de:shibidp3config|Konfiguration]]. | |