Hier können Sie unseren Vortrag „Upgrade auf Shibboleth IdP 4.0.x“ vom 17.11.2020 anschauen oder sich die Folien herunterladen. Zu dem Zeitpunkt war der IdP 4.1.x noch nicht erschienen. Die Themen:
Die Aufzeichnung enthält Kapitelmarken, mit denen Sie in einem geeigneten Player springen können.
Dateien in folgenden Ordnern werden bei Upgrades nicht überschrieben: ./conf
, ./views
, ./messages
und ./edit-webapp
. Hier sollten Sie also Ihre Konfigurationen, Views oder Templates untergebracht haben.
In einer Neuinstallation von Shibboleth IdP 4.x werden IdP-interne Secrets in der separaten Datei secrets.properties
gespeichert. Informationen wie LDAP-Bind- oder Datenbank-Credentials sind durch die Zugangsbeschränkungen dieser neuen Datei besser geschützt. Wir empfehlen, das auch bei aktualisierten IdPs nachzuziehen und die entsprechenden Informationen aus idp.properties
, ldap.properties
oder global.xml
auszulagern.
idp.properties
, hier an letzter Stelle: idp.additionalProperties=/conf/ldap.properties, /conf/saml-nameid.properties, /conf/services.properties, /conf/authn/duo.properties, /credentials/secrets.properties
/opt/shibboleth-idp/credentials/secrets.properties
mit folgenden Parametern (und ggf. weiteren aus Ihrer IdP-Konfiguration): # Access to internal AES encryption key idp.sealer.storePassword = <YOUR-SECRET-HERE> idp.sealer.keyPassword = <YOUR-SECRET-HERE> # Default access to LDAP authn and attribute stores. idp.authn.LDAP.bindDNCredential = <YOUR-LDAP-BIND-CREDENTIAL-HERE> idp.attribute.resolver.LDAP.bindDNCredential = %{idp.authn.LDAP.bindDNCredential:undefined} # Salt used to generate persistent/pairwise IDs, must be kept secret idp.persistentId.salt = <YOUR-VERY-LONG-HASH-HERE> # Access to MySQL database mysql.password = <YOUR-MYQSL-PASSWORD-HERE>
root@idp:~# chown root:tomcat /opt/shibboleth-idp/credentials/secrets.properties root@idp:~# chmod 640 /opt/shibboleth-idp/credentials/secrets.properties
Ein von 3.4.x aktualisierter Shibboleth-IdP verhält sich in Bezug auf den gewählten Verschlüsselungsalgorithmus so wie vor dem Upgrade. Der Algorithmus, der bisher zum Einsatz kam, gilt jedoch nicht mehr als sicher. Bitte schauen Sie sich die unter Konfiguration des Verschlüsselungsalgorithmus gezeigten Möglichkeiten an. Wir zeigen dort einen empfohlenen Weg mit dem neueren Algorithmus AES-GCM und Ausnahmen für SPs, die den Algorithmus noch nicht kennen.
Ab der Version 4.x kommt der IdP mit der neu eingeführten Attribute Registry. Sie können Ihre Datei conf/attribute-resolver.xml
deutlich vereinfachen, wenn Sie auf die Registry umstellen. Außerdem bietet der IdP dann die Möglichkeit, Attribute direkt zu nutzen (zu „exportieren“), die in Ihrem IdM dieselbe ID haben wir in der Attribute Registry. Dadurch können Sie eventuell etliche Attributdefinitionen komplett loswerden. Die Schritte:
conf/attributes
existieren. In der Registry müssen die jeweiligen Transcoding-Regeln und Kurzbeschreibungen stehen. Ist dies der Fall, können Sie die Transcoding-Regeln und Kurzbeschreibungen aus dem Resolver entfernen (Beispiele).conf/services.xml
editieren und folgenden Abschnitt shibboleth.AttributeRegistryResources einkommentieren:<util:list id ="shibboleth.AttributeRegistryResources"> <value>%{idp.home}/conf/attribute-registry.xml</value> <value>%{idp.home}/conf/attributes/default-rules.xml</value> <value>%{idp.home}/conf/attribute-resolver.xml</value> </util:list>
Direkt nach der Aktualisierung auf einen 4.xer IdP erscheinen im Log neue Deprecation Warnings. Wir empfehlen, sie über die Minor Updates hin gleich zu bearbeiten. Hier finden Sie fortlaufend die Einstellungen, die ab 4.x abgekündigt sind.
failfastInitialize
, das zuvor unterhalb des ConnectionPool konfiguriert wurde, wird jetzt direkt beim DataConnector eingestellt.<DataConnector id="myLDAP" xsi:type="LDAPDirectory" ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}" baseDN="%{idp.attribute.resolver.LDAP.baseDN}" principal="%{idp.attribute.resolver.LDAP.bindDN}" principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}" useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}" connectTimeout="%{idp.attribute.resolver.LDAP.connectTimeout}" trustFile="%{idp.attribute.resolver.LDAP.trustCertificates}" responseTimeout="%{idp.attribute.resolver.LDAP.responseTimeout}" failFastInitialize="%{idp.pool.LDAP.failFastInitialize:false}"> <FilterTemplate> <![CDATA[ %{idp.attribute.resolver.LDAP.searchFilter} ]]> </FilterTemplate> <ConnectionPool minPoolSize="%{idp.pool.LDAP.minSize:3}" maxPoolSize="%{idp.pool.LDAP.maxSize:10}" blockWaitTime="%{idp.pool.LDAP.blockWaitTime:PT3S}" validatePeriodically="%{idp.pool.LDAP.validatePeriodically:true}" validateTimerPeriod="%{idp.pool.LDAP.validatePeriod:PT5M}" expirationTime="%{idp.pool.LDAP.idleTime:PT10M}"/> </DataConnector>
ignoreCase
wird ersetzt durch caseSensitive
. Um die gleiche Aussage zu erhalten, geben Sie statt ignoreCase='true'
jetzt caseSensitive='false'
ein. Ein Beispiel aus den Filter Policies (dasselbe kann auch im Attribute Resolver vorkommen): <AttributeFilterPolicy id="LibraryTermsToAnyone"> <PolicyRequirementRule xsi:type="ANY" /> <AttributeRule attributeID="eduPersonEntitlement"> <PermitValueRule xsi:type="Value" value="urn:mace:dir:entitlement:common-lib-terms"/> </AttributeRule> <AttributeRule attributeID="eduPersonScopedAffiliation"> <PermitValueRule xsi:type="OR"> <Rule xsi:type="Value" value="member" caseSensitive="false"/> <Rule xsi:type="Value" value="library-walk-in" caseSensitive="false"/> </PermitValueRule> </AttributeRule> </AttributeFilterPolicy>
xsi:type=„SAML2NameID“
im Attribute Resolver wird für das nächste Major Release abgekündigt. Sie sehen die Warnung, wenn Sie das veraltete Attribut eduPersonTargetedID
im Resolver definiert haben. Bitte ignorieren Sie die Warnung vorerst. Sehr viele Service Provider verlangen das Attribut nach wie vor.WARN [DEPRECATED:125] - xsi:type 'SAML2NameID', (file [/opt/shibboleth-idp/conf/attribute-resolver.xml]): This will be removed in the next major version of this software; replacement is (none)
conf/idp.properties
können bzw. sollten Sie ab Version 4.1.x die folgende Zeile einfügen, damit der IdP alle Properties-Dateien unterhalb des conf
-Ordners einliest, ohne, dass Sie sie einzeln angeben müssen:idp.searchForProperties=true
Vor der Version 4.2.0 liefert der IdP die Transcoding-Regeln und die Bezeichnungen / Beschreibungen der Attribute aus dem schac-Schema nicht mit. Wir hatten zu der Zeit eine Datei dfnMisc.xml
erstellt, die die gängigsten schac-Attribute und einige andere in der DFN-AAI verbreitete Attribute für die Attribute Registry des IdP zusammenstellten. Ab der Version 4.2.0 kam der IdP mit einer eigenen schac.xml
-Datei im Ordner conf/attributes/
. Prüfen Sie beim Upgrade Ihre dfnMisc.xml
. Dopplungen zwischen ihr und der schac.xml
führen zu doppelten Attributen, was zu vermeiden ist. Ersetzen Sie bei Bedarf die dfnMisc.xml
mit der aktuelleren Version.
Laut Shibboleth-Wiki werden die Minor- oder Patch-Updates jeweils über die laufende IdP-Version drüber installiert:
/opt/install
) und entpacken sie./opt/shibboleth-idp
unter Linux. Unter Linux ist außerdem zu beachten, dass beim Upgrade die Schreib-/Leseberechtigungen korrekt gesetzt werden (Parameter -Didp.conf.filemode=644
beim Aufruf von ./bin/install.sh
).root@idp:/opt/install/shibboleth-identity-provider-4.1.4# ./bin/install.sh -Didp.conf.filemode=644 Buildfile: /opt/install/shibboleth-identity-provider-4.1.4/bin/build.xml install: Source (Distribution) Directory (press <enter> to accept default): [/opt/install/shibboleth-identity-provider-4.1.4] ? Installation Directory: [/opt/shibboleth-idp] ? INFO [net.shibboleth.idp.installer.V4Install:155] - Update from version 4.1.3 to version 4.1.4 INFO [net.shibboleth.idp.installer.BuildWar:72] - Rebuilding /opt/shibboleth-idp/war/idp.war, Version 4.1.4 INFO [net.shibboleth.idp.installer.BuildWar:81] - Initial populate from /opt/shibboleth-idp/dist/webapp to /opt/shibboleth-idp/webpapp.tmp INFO [net.shibboleth.idp.installer.BuildWar:90] - Overlay from /opt/shibboleth-idp/edit-webapp to /opt/shibboleth-idp/webpapp.tmp INFO [net.shibboleth.idp.installer.BuildWar:99] - Creating war file /opt/shibboleth-idp/war/idp.war BUILD SUCCESSFUL Total time: 42 seconds
Die Kollegen von der Charité Berlin haben eine Anleitung für Ubuntu 18.04 verfasst, in der sie den Tomcat9 manuell installieren: Vielen Dank an Mario Severing für's Teilen!