Details
-
Bug
-
Resolution: Fixed
-
Blocker
-
2.19.0
-
None
-
Docker
Xwiki 17.6.0 (Stable as of 20025-07-31)
OpenID Connect Authenticator 2.19.0
Postgresql 17
Linux Debian
-
Unknown
-
Description
TL;DR: OIDC Connector Authenticator 2.19.0 cannot find a java class with xwiki 17.6.0 but it works with xwiki 17.4.2
Description
A fresh docker compose install of 17.6.0 with OIDC Connector Authenticator 2.19.0 will trigger the following on boot making it impossible to use OIDC. Interestingly `commons-lang3.jar` is available in WEB-INF/classes
Stack trace on boot
2025-07-31 01:23:55,798 [http-nio-8080-exec-3 - http://xwiki.domain.tld/bin/view/Main/] WARN c.x.x.XWiki - Failed to initialize the AuthService from class [org.xwiki.contrib.oidc.auth.OIDCAuthServiceImpl], fallbacking on standard authenticator java.lang.RuntimeException: Failed to load component for type [class org.xwiki.contrib.oidc.provider.internal.OIDCManager] for hint [default] at com.xpn.xwiki.web.Utils.getComponent(Utils.java:746) at com.xpn.xwiki.web.Utils.getComponent(Utils.java:769) at com.xpn.xwiki.web.Utils.getComponent(Utils.java:722) at org.xwiki.contrib.oidc.auth.OIDCAuthServiceImpl.<init>(OIDCAuthServiceImpl.java:67) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(Unknown Source) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source) at java.base/java.lang.reflect.ReflectAccess.newInstance(Unknown Source) at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(Unknown Source) at java.base/java.lang.Class.newInstance(Unknown Source) at com.xpn.xwiki.XWiki.setAuthService(XWiki.java:6087) at com.xpn.xwiki.XWiki.getAuthService(XWiki.java:6050) at com.xpn.xwiki.XWiki.checkAuth(XWiki.java:4400) at org.xwiki.security.authorization.internal.XWikiCachingRightService.authenticateUser(XWikiCachingRightService.java:238) at org.xwiki.security.authorization.internal.XWikiCachingRightService.checkAccess(XWikiCachingRightService.java:268) at com.xpn.xwiki.XWiki.checkAccess(XWiki.java:4423) at com.xpn.xwiki.XWiki.prepareDocuments(XWiki.java:5833) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:547) at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:338) at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:111) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:71) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:66) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:135) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:211) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.container.servlet.filters.internal.SafeRedirectFilter.doFilter(SafeRedirectFilter.java:106) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.container.servlet.filters.internal.ResolveRelativeRedirectFilter.doFilter(ResolveRelativeRedirectFilter.java:129) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.container.servlet.filters.internal.SourceURLResolverFilter.doFilter(SourceURLResolverFilter.java:177) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:120) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:666) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1769) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Unknown Source) Caused by: org.xwiki.component.manager.ComponentLookupException: Failed to lookup component [org.xwiki.contrib.oidc.provider.internal.OIDCManager] identified by type [class org.xwiki.contrib.oidc.provider.internal.OIDCManager] and hint [default] at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:341) at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:329) at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:311) at org.xwiki.component.internal.multi.DelegateComponentManager.getInstance(DelegateComponentManager.java:83) at org.xwiki.component.internal.multi.DelegateComponentManager.getInstance(DelegateComponentManager.java:83) at org.xwiki.component.internal.multi.DelegateComponentManager.getInstance(DelegateComponentManager.java:83) at org.xwiki.component.internal.multi.DelegateComponentManager.getInstance(DelegateComponentManager.java:83) at org.xwiki.component.internal.multi.DelegateComponentManager.getInstance(DelegateComponentManager.java:83) at com.xpn.xwiki.web.Utils.getComponent(Utils.java:744) ... 68 common frames omitted Caused by: java.lang.NoClassDefFoundError: org/apache/commons/lang/RandomStringUtils at org.xwiki.contrib.oidc.provider.internal.OIDCManager.generateKeys(OIDCManager.java:217) at org.xwiki.contrib.oidc.provider.internal.OIDCManager.initialize(OIDCManager.java:174) at org.xwiki.component.embed.InitializableLifecycleHandler.handle(InitializableLifecycleHandler.java:39) at org.xwiki.component.embed.EmbeddableComponentManager.createInstance(EmbeddableComponentManager.java:612) at org.xwiki.component.embed.EmbeddableComponentManager.getComponentInstance(EmbeddableComponentManager.java:719) at org.xwiki.component.embed.EmbeddableComponentManager.getInstance(EmbeddableComponentManager.java:338) ... 76 common frames omitted Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.RandomStringUtils at java.base/java.net.URLClassLoader.findClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 82 common frames omitted
Docker libs
root@4f06285fbcf9:/usr/local/tomcat/webapps/ROOT/WEB-INF/lib# ls commons-lang3 -l rw-rr- 1 root root 702952 Jul 6 19:43 commons-lang3-3.18.0.jar rw-rr- 1 root root 9727 Jul 28 13:11 commons-lang3-3.18.0.xed
How to reproduce
- Use docker-compose.yml from https://github.com/xwiki/xwiki-docker/blob/master/17/postgres-tomcat/docker-compose.yml with XWIKI_VERSION=17.6.0
- docker compose up -d
- Go through bootstrap process
- Install 17.6.0 flavour
- Go to Extension Manager
- Install OpenID Connect Authenticator 2.19.0
- Restart with : docker compose down && docker compose up
- Check docker boot logs (you'll find the issue, right after the MailPlugin issue
:
Environment
- Docker
- Xwiki 17.6.0 (Stable as of 20025-07-31)
- OpenID Connect Authenticator 2.19.0
- Postgresql 17
- Linux Debian (irrelevant due to docker but for completeness)
Workaround
Use XWiki 17.4.2 (Intermediate Long Term Support) with OpenID Connect Authenticator 2.19.0