instipod / DuoUniversalKeycloakAuthenticator

Keycloak Authenticator for Duo's new Universal Prompt
GNU General Public License v3.0
50 stars 15 forks source link

Replacing "17" with "18" in pom.xml causing error in adding JAR extension to keycloak server #31

Closed nix-power closed 4 months ago

nix-power commented 4 months ago

Replacing "17" with "18" in pom.xml causing error in adding JAR extension to keycloak server

(The build itself is succesfull though...)

It has been tested with Keycloak 22.x, 23.x and 24.x versions.

cat versions.yaml
old-stable:
  os: debian-11
  release: r3
  app_version: 22.0.4
  mvn_version: 3.8.6-eclipse-temurin-18-alpine
stable:
  os: debian-12
  release: r5
  app_version: 23.0.7
  mvn_version: 3.8.6-eclipse-temurin-18-alpine
testing:
  os: debian-12
  release: r3
  app_version: 24.0.3
  mvn_version: 3.8.6-eclipse-temurin-18-alpine

Output from multi-stage build for duo JAR and keycloak container

33.74 2024-04-30 04:14:40,350 TRACE [org.jboss.threads] (build-8) Thread "Thread[build-8,5,]" exiting
33.74
33.81 ERROR: Failed to run 'build' command.
33.81 ERROR: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
33.81   [error]: Build step org.keycloak.quarkus.deployment.KeycloakProcessor#configureKeycloakSessionFactory threw an exception: java.lang.UnsupportedClassVersionError: com/instipod/duouniversal/getshim/GetShimProviderFactory has been compiled by a more recent version of the Java Runtime (class file version 62.0), this version of the Java Runtime only recognizes class file versions up to 61.0
33.81   at java.base/java.lang.ClassLoader.defineClass1(Native Method)
33.81   at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
33.81   at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:508)
33.81   at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
33.81   at java.base/java.lang.Class.forName0(Native Method)
33.81   at java.base/java.lang.Class.forName(Class.java:467)
33.81   at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1217)
33.81   at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1228)
33.81   at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
33.81   at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
33.81   at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
33.81   at org.keycloak.provider.DefaultProviderLoader.load(DefaultProviderLoader.java:60)
33.81   at org.keycloak.provider.ProviderManager.load(ProviderManager.java:93)
33.81   at org.keycloak.quarkus.deployment.KeycloakProcessor.loadFactories(KeycloakProcessor.java:690)
33.81   at org.keycloak.quarkus.deployment.KeycloakProcessor.configureKeycloakSessionFactory(KeycloakProcessor.java:398)
33.81   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
33.81   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
33.81   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
33.81   at java.base/java.lang.reflect.Method.invoke(Method.java:568)
33.81   at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
33.81   at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
33.81   at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
33.81   at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
33.81   at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
33.81   at java.base/java.lang.Thread.run(Thread.java:840)
33.81   at org.jboss.threads.JBossThread.run(JBossThread.java:501)
33.81
33.81 ERROR: Build failure: Build failed due to errors
33.81   [error]: Build step org.keycloak.quarkus.deployment.KeycloakProcessor#configureKeycloakSessionFactory threw an exception: java.lang.UnsupportedClassVersionError: com/instipod/duouniversal/getshim/GetShimProviderFactory has been compiled by a more recent version of the Java Runtime (class file version 62.0), this version of the Java Runtime only recognizes class file versions up to 61.0
33.81   at java.base/java.lang.ClassLoader.defineClass1(Native Method)
33.81   at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
33.81   at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:508)
33.81   at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:468)
33.81   at java.base/java.lang.Class.forName0(Native Method)
33.81   at java.base/java.lang.Class.forName(Class.java:467)
33.81   at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1217)
33.81   at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1228)
33.81   at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
33.81   at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
33.81   at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
33.81   at org.keycloak.provider.DefaultProviderLoader.load(DefaultProviderLoader.java:60)
33.81   at org.keycloak.provider.ProviderManager.load(ProviderManager.java:93)
33.81   at org.keycloak.quarkus.deployment.KeycloakProcessor.loadFactories(KeycloakProcessor.java:690)
33.81   at org.keycloak.quarkus.deployment.KeycloakProcessor.configureKeycloakSessionFactory(KeycloakProcessor.java:398)
33.81   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
33.81   at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
33.81   at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
33.81   at java.base/java.lang.reflect.Method.invoke(Method.java:568)
33.81   at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
33.81   at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
33.81   at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
33.81   at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
33.81   at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
33.81   at java.base/java.lang.Thread.run(Thread.java:840)
33.81   at org.jboss.threads.JBossThread.run(JBossThread.java:501)
33.81
33.81 ERROR: com/instipod/duouniversal/getshim/GetShimProviderFactory has been compiled by a more recent version of the Java Runtime (class file version 62.0), this version of the Java Runtime only recognizes class file versions up to 61.0
33.81 For more details run the same command passing the '--verbose' option. Also you can use '--help' to see the details about the usage of the particular command.
------
Dockerfile:11
--------------------
  11 | >>> RUN bin/kc.sh build
  12 |
  13 |     FROM bitnami/keycloak:24.0.3
--------------------
ERROR: failed to solve: process "/bin/bash -o errexit -o nounset -o pipefail -c bin/kc.sh build" did not complete successfully: exit code: 1

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/kr6n64lbbnyzjvbdhtfkblevk
make: *** [build] Error 1
Cleaning up...
nix-power commented 4 months ago

Building keycloak 23.x container with temurin-18-alpine and "17" in pom.xml

[DEBUG] adding entry META-INF/maven/com.instipod/DuoUniversalKeycloakAuthenticator/pom.xml
[DEBUG] adding entry META-INF/maven/com.instipod/DuoUniversalKeycloakAuthenticator/pom.properties
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:45 min
[INFO] Finished at: 2024-04-30T04:34:46Z
[INFO] ------------------------------------------------------------------------
duo/target/DuoUniversalKeycloakAuthenticator-1.0.10_23.0.7-jar-with-dependencies.jar -> image/jar/DuoUniversalKeycloakAuthenticator-1.0.10_23.0.7-jar-with-dependencies.jar
Done building Duo JAR

Building docker container for Keycloak

[+] Building 76.3s (11/11) FINISHED                                                                                                                                                                                                                                 docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                                                                                0.0s
 => => transferring dockerfile: 1.00kB                                                                                                                                                                                                                                              0.0s
 => [internal] load metadata for docker.io/bitnami/keycloak:23.0.7                                                                                                                                                                                                                  0.9s
 => [auth] bitnami/keycloak:pull token for registry-1.docker.io                                                                                                                                                                                                                     0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                                                                   0.0s
 => => transferring context: 2B                                                                                                                                                                                                                                                     0.0s
 => [internal] load build context                                                                                                                                                                                                                                                   0.0s
 => => transferring context: 9.18MB                                                                                                                                                                                                                                                 0.0s
 => CACHED [builder 1/4] FROM docker.io/bitnami/keycloak:23.0.7@sha256:9596e39ee28105274379903db57aee298ab9f3292aa96797fda2aeaabcc38326                                                                                                                                             0.0s
 => [builder 2/4] COPY jar/ /opt/bitnami/keycloak/providers/                                                                                                                                                                                                                        0.0s
 => [builder 3/4] WORKDIR /opt/bitnami/keycloak                                                                                                                                                                                                                                     0.0s
 => [builder 4/4] RUN bin/kc.sh build                                                                                                                                                                                                                                              74.7s
 => [stage-1 2/2] COPY --from=builder /opt/bitnami/keycloak/ /opt/bitnami/keycloak/                                                                                                                                                                                                 0.2s
 => exporting to image                                                                                                                                                                                                                                                              0.3s
 => => exporting layers                                                                                                                                                                                                                                                             0.3s
 => => writing image sha256:903b14c93256ee87df96d16f143b329b2c1a4b494026ab51b77f3b1e28963e1d                                                                                                                                                                                        0.0s
 => => naming to docker.io/library/keycloak:23.0.7-debian-12-r5                                                                                                                                                                                                                     0.0s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/n6ftkcb8dj1hqxj0e3oasuz26
instipod commented 4 months ago

Looks like the Java version included in the official Docker container is only version 17, hence the run error with a target of 18

bash-5.1$ java -version

openjdk version "17.0.10" 2024-01-16 LTS

OpenJDK Runtime Environment (Red_Hat-17.0.10.0.7-1) (build 17.0.10+7-LTS)

OpenJDK 64-Bit Server VM (Red_Hat-17.0.10.0.7-1) (build 17.0.10+7-LTS, mixed mode)
instipod commented 4 months ago

Fixed with 054334a

nix-power commented 4 months ago

Are you talking about official keycloak container, right ?

instipod commented 4 months ago

Yes, quay.io/keycloak/keycloak

nix-power commented 4 months ago

Ah, i see. I use bitnami keycloak containers, but probably they use the same Java versions