Issues installing LDAP Authenticator extension in offline environment

Hi,

I’m running XWiki 16.10.5 with standard flavor as a docker container in an offline environment without internet connection.

I’m trying to install the XWiki extension LDAP Authenicator 9.15.7. I built an XIP package using this pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.xwiki.platform</groupId>
    <artifactId>xwiki-platform-distribution</artifactId>
    <!-- The version of XWiki where the extension is planned to be installed -->
    <version>16.10.5</version>
  </parent>
  <groupId>groupid</groupId>
  <artifactId>package</artifactId>
  <packaging>xip</packaging>
  <properties>
    <!-- It's expected for some enforcer rules to fail with a dependency that was not designed to be built with this version of XWiki -->
    <xwiki.enforcer.skip>true</xwiki.enforcer.skip>
  </properties>
  <dependencies>
    <!-- The extension to package along with its dependencies-->
    <dependency>
      <groupId>org.xwiki.contrib.ldap</groupId>
      <artifactId>ldap-authenticator</artifactId>
      <version>9.15.7</version>
    </dependency>
  </dependencies>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.xwiki.commons</groupId>
          <artifactId>xwiki-commons-tool-extension-plugin</artifactId>
          <version>${commons.version}</version>
          <configuration>
            <coreExtensions>
              <!-- We exclude what is already in the WAR -->
              <coreExtension>
                <groupId>org.xwiki.platform</groupId>
                <artifactId>xwiki-platform-distribution-war-dependencies</artifactId>
                <version>${platform.version}</version>
                <type>pom</type>
              </coreExtension>
            </coreExtensions>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

and mvn clean package.

I installed the resulting xpi by unzipping it to /usr/local/xwiki/data/extension/repository/ and installed it using the Extensions Manager. So far so good.

The extension has a few dependencies:

  • org.xwiki.platform:xwiki-platform-oldcore 8.4
  • com.novell.ldap:jldap 2009-10-07
  • org.xwiki.contrib:authservice-backport-api 1.1.1

JLDAP installed fine, but the others have not been installed since they are already installed in general, with a different version (16.10.5), however. And this version mismatch seem to cause problems:

In a testing environment WITH internet connection this mismatch is resolved fine: the depending extensions are linked with “Version 16.10.5 is provided” mentioned. In my offline environment they are not linked, however. According to the logs, XWiki seems to try to locate the old versions online such as https://extensions.xwiki.org/xwiki/rest/repository/extensions/org.xwiki.platform%3Axwiki-platform-oldcore/versions/8.4. As a result LDAP authentication fails with a ClassNotFoundException: org.xwiki.contrib.ldap.XWikiLDAPAuthServiceImpl and consequently: Failed to get the configured AuthService, fallbacking on standard authenticator.

How to tell my offline XWiki to use the 16.10.5 version instead and make the LDAP Authenticator extension work in my offline environment?

Thanks a lot in advance!

This means that the extension org.xwiki.contrib.ldap:ldap-authenticator (in which this class is located) is either not installed (but you indicated that it installed fine), or not loaded after a restart. If it’s the latter, you should see a warning in the startup log explaining why this extension is invalid (and so, not loaded).

Hi Thomas, thanks a lot for your quick answer!

No warnings unfortunately. Just:

2025-04-30 13:07:15,412 [http-nio-8080-exec-2 - http://192.168.0.2/bin/cancel/XWiki/Extensions?ajax=1&action=admin&] ERROR c.x.x.XWiki                    - Failed to get the configured AuthService, fallbacking on standard authenticator
java.lang.ClassNotFoundException: org.xwiki.contrib.ldap.XWikiLDAPAuthServiceImpl
   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)
   at java.base/java.lang.Class.forName0(Native Method)
   at java.base/java.lang.Class.forName(Unknown Source)
   at java.base/java.lang.Class.forName(Unknown Source)
   at com.xpn.xwiki.XWiki.getAuthServiceClass(XWiki.java:6029)
   at com.xpn.xwiki.XWiki.getAuthService(XWiki.java:6042)
   at com.xpn.xwiki.XWiki.checkAuth(XWiki.java:4397)
   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:4420)
   at com.xpn.xwiki.XWiki.prepareDocuments(XWiki.java:5829)
   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:108)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:117)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
   at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
   at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396)
   at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
   at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:937)
   at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1793)
   at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
   at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
   at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
   at java.base/java.lang.Thread.run(Unknown Source)

The Extension Manager insists that the extension is installed, however - disregarding the mentioned issues with the dependency versions.

Any ideas?

Are you sure you looked at the startup log, what you get right after XWiki is restarted, before even accessing it ? What you pasted above is printed when XWiki tries to use the configured authenticator.

If you never restarted after the install, then maybe you should try it. It’s possible something caused a classloader problem after the install.

I don’t really understand which issues you are referring to. As you mentioned, the extension installed fine.

No, I don’t think those are linked in any way. What tried to access https://extensions.xwiki.org/xwiki/rest/repository/extensions/org.xwiki.platform%3Axwiki-platform-oldcore/versions/8.4 is most probably the UI which list the dependencies, to gather more information about this dependency. If the dependency was a problem, it would have never installed the extension in the first place. And at runtime there is no reason for this extension to check the dependencies in any way.

Hi Thomas,

good to know. So the issue is probably something completely different.

I did restart XWiki, however (podman compose restart). Here’s the full startup log:

NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
30-Apr-2025 13:24:30.067 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.102
30-Apr-2025 13:24:30.075 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Mar 3 2025 19:33:14 UTC
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.102.0
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            6.8.0-58-generic
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /opt/java/openjdk
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           21.0.6+7-LTS
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Eclipse Adoptium
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
30-Apr-2025 13:24:30.076 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1024m
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.security.egd=file:/dev/./urandom
30-Apr-2025 13:24:30.084 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
30-Apr-2025 13:24:30.085 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
30-Apr-2025 13:24:30.085 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dsun.io.useCanonCaches=false
30-Apr-2025 13:24:30.085 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
30-Apr-2025 13:24:30.085 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
30-Apr-2025 13:24:30.085 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
30-Apr-2025 13:24:30.085 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
30-Apr-2025 13:24:30.085 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
30-Apr-2025 13:24:30.088 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.3.1] using APR version [1.7.2].
30-Apr-2025 13:24:30.088 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
30-Apr-2025 13:24:30.088 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
30-Apr-2025 13:24:30.092 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.13 30 Jan 2024]
30-Apr-2025 13:24:30.352 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
30-Apr-2025 13:24:30.382 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [462] milliseconds
30-Apr-2025 13:24:30.412 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
30-Apr-2025 13:24:30.412 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.102]
30-Apr-2025 13:24:30.418 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
2025-04-30 13:24:34,795 [main] INFO  iPropertiesConfigurationSource - Loading [xwiki.properties] from [file:/usr/local/tomcat/webapps/ROOT/WEB-INF/xwiki.properties]
2025-04-30 13:24:36,278 [main] INFO  iPropertiesConfigurationSource - Loading [xwiki.properties] from [file:/usr/local/tomcat/webapps/ROOT/WEB-INF/xwiki.properties]
2025-04-30 13:24:36,290 [main] INFO  o.x.e.i.ServletEnvironment     - Using permanent directory [/usr/local/xwiki/data]
2025-04-30 13:24:41,983 [main] INFO  o.x.s.s.i.EmbeddedSolr         - Updating Solr home directory at [/usr/local/xwiki/data/store/solr]
2025-04-30 13:24:41,995 [main] INFO  o.x.s.s.i.EmbeddedSolr         - Starting embedded Solr server...
2025-04-30 13:24:41,995 [main] INFO  o.x.s.s.i.EmbeddedSolr         - Using Solr home directory: [/usr/local/xwiki/data/store/solr]
2025-04-30 13:24:42,850 [main] WARN  o.a.s.c.CoreContainer          - Not all security plugins configured!  authentication=disabled authorization=disabled.  Solr is only as secure as you make it. Consider configuring authentication/authorization before exposing Solr to users internal or external.  See https://s.apache.org/solrsecurity for more info
30-Apr-2025 13:24:44.018 INFO [coreLoadExecutor-11-thread-1] org.apache.lucene.store.MemorySegmentIndexInputProvider.<init> Using MemorySegmentIndexInput with Java 21; to disable start with -Dorg.apache.lucene.store.MMapDirectory.enableMemorySegments=false
2025-04-30 13:24:45,955 [main] INFO  o.x.s.s.i.EmbeddedSolr         - Started embedded Solr server.
2025-04-30 13:24:46,305 [main] INFO  o.x.s.f.i.FilesystemStoreTools - Using filesystem store directory [/usr/local/xwiki/data/store/file]
2025-04-30 13:24:46,435 [main] INFO  o.x.o.i.s.DefaultOfficeServer  - Open Office instance started.
30-Apr-2025 13:24:46.566 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [16,149] ms
30-Apr-2025 13:24:46.574 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
30-Apr-2025 13:24:46.624 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [16241] milliseconds
2025-04-30 13:24:47,018 [jodconverter-offprocmng-0] WARN  tartProcessAndConnectRetryable - Office process died with exit code 81; restarting it
2025-04-30 13:25:17,661 [XWiki initialization] INFO  .HibernateDataMigrationManager - Storage schema updates and data migrations are enabled
2025-04-30 13:25:17,842 [XWiki initialization] INFO  .HibernateDataMigrationManager - No data migration to apply for wiki [xwiki] currently in version [160500000]
2025-04-30 13:25:17,843 [XWiki initialization] INFO  .HibernateDataMigrationManager - Checking Hibernate mapping and updating schema if needed for wiki [xwiki]
2025-04-30 13:25:20,444 [solr/indexer job group daemon thread - org.xwiki.search.solr.internal.job.IndexerJob@6f5c20f3([solr, indexer])] INFO  o.x.s.s.i.j.IndexerJob         - Starting job of type [solr.indexer] with identifier [[solr, indexer]]
2025-04-30 13:25:21,115 [solr/indexer job group daemon thread - org.xwiki.search.solr.internal.job.IndexerJob@6f5c20f3([solr, indexer])] INFO  o.x.s.s.i.j.IndexerJob         - 0 documents added, 0 deleted and 0 updated during the synchronization of the Solr index.
2025-04-30 13:25:21,116 [solr/indexer job group daemon thread - org.xwiki.search.solr.internal.job.IndexerJob@6f5c20f3([solr, indexer])] INFO  o.x.s.s.i.j.IndexerJob         - Finished job of type [solr.indexer] with identifier [[solr, indexer]]
2025-04-30 13:25:26,481 [http-nio-8080-exec-6 - http://192.168.0.2/bin/cancel/XWiki/ExtensionHistory?ajax=1&action=admin&] ERROR c.x.x.XWiki                    - Failed to get the configured AuthService, fallbacking on standard authenticator
java.lang.ClassNotFoundException: org.xwiki.contrib.ldap.XWikiLDAPAuthServiceImpl
[...]

Can you probably tell me, how to verify that the extension is correctly installed? I might have missed something…

Guess I found it!

The jar file in my xip package does not contain any class files. Something went wrong when creating the package I guess. The jar contains nothing but meta information:

$ unzip -l org%2Exwiki%2Econtrib%2Eldap%3Aldap-authenticator/9%2E15%2E7/org%2Exwiki%2Econtrib%2Eldap%3Aldap-authenticator-9%2E15%2E7.jar 
Archive:  org%2Exwiki%2Econtrib%2Eldap%3Aldap-authenticator/9%2E15%2E7/org%2Exwiki%2Econtrib%2Eldap%3Aldap-authenticator-9%2E15%2E7.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
     1048  2025-04-30 08:41   META-INF/MANIFEST.MF
        0  2025-04-30 08:41   META-INF/
        0  2025-04-30 08:41   META-INF/maven/
        0  2025-04-30 08:41   META-INF/maven/org.xwiki.contrib.ldap/
        0  2025-04-30 08:41   META-INF/maven/org.xwiki.contrib.ldap/ldap-authenticator/
    34643  2025-04-30 08:41   META-INF/NOTICE
    31981  2025-04-30 08:41   META-INF/LICENSE
     4148  2025-03-13 13:51   META-INF/maven/org.xwiki.contrib.ldap/ldap-authenticator/pom.xml
      107  2025-04-30 08:41   META-INF/maven/org.xwiki.contrib.ldap/ldap-authenticator/pom.properties
---------                     -------
    71927                     9 files

Any ideas, what I could have done wrong when creating the XIP package?

Hmm, nothing IMO, since in the JAR was downloaded by Maven from Index of /repositories/public/org/xwiki/contrib/ldap/ldap-authenticator/9.15.7, you did not create it. The JAR file looks fine there AFAICS so maybe try to build the XIP again (strange network problem ?).

Solved: My local Maven repo in ~/.m2/repository seems to have been damaged. I removed it (rm -r ~/.m2/repository) and rebuilt the package (mvn clean package) and the JAR file looks fine again.

Thanks for your mental support, Thomas!