====== Troubleshooting Upgrade Shib IdP 5.x ====== ===== net.shibboleth.plugin.storage.jdbc ===== __Fehler__ Das Problem äußert sich, wenn eine veraltete Plugin-Version für net.shibboleth.plugin.storage.jdbc installiert ist. Logfiles: Tomcat catalina.log: ====BEGIN==== SEVERE [main] org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Context [/idp] startup failed due to previous errors ====END==== Tomcat localhost.log: ====BEGIN==== SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [net.shibboleth.plugin.storage.jdbc.impl.JDBCStorageService] for bean with name 'JDBCStorageService' defined in file [/opt/shibboleth-idp/conf/global.xml]: problem with class file or dependent class at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1508) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:683) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:651) .... ====END==== __Lösung__ Version 2.0.0 muss mindestens installiert sein, um mit IdP 5.x kompatibel zu sein. Eine Aktualisierung des Plugins ist erst nach dem IdP 5 Upgrade möglich. detaillierte Lister aller installierten Plugins: root@idp:/bin/plugin.sh -fl Plugin: net.shibboleth.plugin.storage.jdbc Current Version: 1.0.3 Versions 1.0.4: Min=4.1.0 Max=5.0.0 Support level: Current 1.0.1: Min=4.1.0 Max=5.0.0 Support level: OutOfDate 1.0.0: Min=4.1.0 Max=5.0.0 Support level: OutOfDate 1.0.3: Min=4.1.0 Max=5.0.0 Support level: OutOfDate 1.0.2: Min=4.1.0 Max=5.0.0 Support level: OutOfDate 2.0.0: Min=5.0.0 Max=6.0.0 Support level: Current Liste verfügbarer Updates: root@idp:/opt/shibboleth-idp# bin/plugin.sh -L Plugin net.shibboleth.plugin.storage.jdbc: version 2.0.0 available for install Aktualisieren des Plugins behebt den Fehler: root@idp:/opt/shibboleth-idp# bin/plugin.sh -u net.shibboleth.plugin.storage.jdbc ===== JSTL-Fehler ===== __Fehler__ Beim Aufruf der Statusseite im Browser erscheint im Browserfenster die Fehlermeldung "Ein Fehler ist aufgetreten: ServletException". In den IdP-Logs findet sich folgende Meldung: ERROR [jakarta.servlet.ServletException:144] -  jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/Config         at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1104) Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/Config         at org.springframework.web.servlet.support.JstlUtils.exposeLocalizationContext(JstlUtils.java:103) __Lösung__ Der Fehler lässt sich durch Einbinden einer aktuelleren Version von jakarta jstl beheben. $ wget -P /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/ https://repo.maven.apache.org/maven2/org/glassfish/web/jakarta.servlet.jsp.jstl/3.0.1/jakarta.servlet.jsp.jstl-3.0.1.jar $ wget -P /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/ https://repo.maven.apache.org/maven2/jakarta/servlet/jsp/jstl/jakarta.servlet.jsp.jstl-api/3.0.0/jakarta.servlet.jsp.jstl-api-3.0.0.jar Danach build erneut ausführen und Tomcat neu starten: $ sudo /opt/shibboleth-idp/bin/build.sh -Didp.target.dir=/opt/shibboleth-idp $ sudo systemctl restart tomcat10.service ===== Veraltete ldap-authn-config.xml ===== Entsprechend https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631612/LDAPAuthnConfiguration wurde die LDAP-Konfiguration in V4.1 geändert. Die Datei //conf/authn/ldap-authn-config.xml// wird nicht mehr mitgeliefert/benötigt. __Fehler__ Wurde diese Datei in V 4.1 nicht gelöscht und die entsprechende Referenz "" in conf/authn/password-authn-config.xml nicht entfernt findet sich folgende Fehlermeldung im Logfile des IdP: WARN [net.shibboleth.shared.spring.context.FilesystemGenericWebApplicationContext:616] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.ldaptive.auth.PooledBindAuthenticationHandler] for bean with name 'authHandler' defined in file [/opt/shibboleth-idp/conf/authn/ldap-authn-config.xml] ERROR [org.springframework.webflow.execution.FlowExecutionException:88] - org.springframework.webflow.execution.FlowExecutionException: Exception thrown in state 'CallAuthenticationFlow' of flow 'authn' at org.springframework.webflow.engine.impl.FlowExecutionImpl.wrap(FlowExecutionImpl.java:573) __Lösung__ * Löschen der Datei conf/authn/ldap-auth-config.xml gelöscht werden * entfernen der entsprechende Referenz "" in //conf/authn/password-authn-config.xml// * ggf. muss zusätzlich in der password-auth-config.xml folgender Abschnitt hinzugefügt werden, wenn dieser fehlt **Vielen Dank an Michael Pietsch für´s Teilen!** ===== MetadataFilterConfiguration ===== Metadaten können gefiltert werden, nachdem sie geladen, aber vor ihrer Verwendung. Wie Metadatenanbieter werden auch Metadatenfilter durch ihr xsi:type-Attribut definiert. Mit Version 4.1 wurde der xsi:type //EntityRole// eingeführt. Er ist identisch mit dem vorher vorhandenen xsi:type //EntityRoleWhiteList//. In Version 4.1 bis 4.3 werden beiden unterstützt. Ab Version 5.0 wird ausschließlich der xsi:type //EntityRole// unterstützt. __Fehler__ Beim Upgrade auf 5.x tritt bei der Verwendung der alten Konfiguration folgende Fehlermeldung im Logfile idp-process.log auf: net.shibboleth.shared.spring.service.ReloadableSpringService.doReload(ReloadableSpringService.java:375) Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 88 in XML document from file [/opt/shibboleth-idp/conf/metadata-providers.xml] is invalid         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:411) Caused by: org.xml.sax.SAXParseException: cvc-elt.4.2: 'EntityRoleWhiteList' kann nicht als Typdefinition für Element 'MetadataFilter' aufgelöst werden. __Lösung__ Ersetzen Sie in der Datei //metadata-providers.xml// den alten durch den neuen xsi:type md:SPSSODescriptor ===== DataConnector übergibt keine Attribute ===== __Fehler__ nach dem Upgrade von Shibboleth IdP 4.x auf 5.x erscheint im Debug-Modus folgende Meldung in den Logfiles: DEBUG [net.shibboleth.idp.attribute.resolver.AbstractDataConnector:194] - myLDAP No attributes were produced during resolution DEBUG [net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin:188] - Resolver plugin 'myLDAP' produced no value. DEBUG [net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl:404] - Attribute Resolver 'ShibbolethAttributeResolver': Data connector 'myLDAP' produced no attributes __Lösung__ Die Variable //requestContext// wurde aus einer Konfiguration aus [[https://shibboleth.atlassian.net/wiki/spaces/IDP30/pages/2496561608/FilterTemplate | Shibboleth IdP V3]] für den DataConnector myLDAP in der Datei //attribute-resolver.xml// übernommen:              Diese Überbleibsel aus der Unterstützung für IdP V2-Scripte sollte bereits in V4 deprecated sein und wurde nun in V5 entfernt. Stattdessen ist die [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199503969/FilterTemplate | Variable]] //resolutionContext// zu verwenden:    ===== Key-Rollover ===== __Fehler__ /opt/shibboleth-idp/bin/update-sealer.sh Error: Could not find or load main class net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool Caused by: java.lang.ClassNotFoundException: net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool __Lösung__ Das Skript, welches die Sealer-relevanten Einstellungen aus ./conf/idp-properties liest und damit neue Schlüsselwerte erzeugt, wurde für v5 angepasst. Das Skript unter ///opt/shibboleth-idp/bin/update-sealer.sh// muss ersetzt werden. Siehe [[de:shibidp:config-sealer|Key-Rollover]] **Vielen Dank an Dirk Schäfer für´s Teilen!** ===== Tomcat startet nicht mehr ===== __Fehler__ Nach der Installation von Java 17 und dem Auswählen dieser Version, startet tomcat nicht mehr. __Lösung__ wegen des veralteten Garbage Collectors in ///etc/default/tomcat9//: JAVA_OPTS="-Djava.awt.headless=true -XX:+UseCondcMarkSweepGC -Xms1024m -Xmx2048m" In ///etc/default/tomcat9// diese Option entfernen, dann startet der Tomcat auch wieder: JAVA_OPTS="-Djava.awt.headless=true -Xms1024m -Xmx2048m" **Vielen Dank an Georg Scheurich für´s Teilen!**