Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed to run on Keycloak greater than v22 #13

Open
leoraba opened this issue May 23, 2024 · 1 comment
Open

Failed to run on Keycloak greater than v22 #13

leoraba opened this issue May 23, 2024 · 1 comment

Comments

@leoraba
Copy link
Contributor

leoraba commented May 23, 2024

Getting error loading keycloak-apikeys-1.0.1.jar extension on Keycloak greater than version 22.
Error found on Keycloak v23 and v24
Latest working version is v22.

Steps to reproduce the issue:

  1. Copy apiKey extension onto Keycloak container:
    docker cp keycloak-apikeys-1.0.1.jar [CONTAINERID]:/opt/bitnami/keycloak/providers/
  2. Restart Keycloak container.
  3. Check Keycloak container logs
    EXPECTED: Keycloak container should run successfully with apikey extension loaded
    CURRENT BEHAVIOUR: Keycloak container fails to restart with the following error:
keycloak-apikeys-keycloak-1  | 2024-05-23 15:12:36,119 WARN  [org.key.services] (build-30) KC-SERVICES0047: apikey (bio.overture.keycloak.provider.ResourceProviderFactory) is implementing the internal SPI realm-restapi-extension. This SPI is internal and may change without notice
keycloak-apikeys-keycloak-1  | 2024-05-23 15:12:36,119 WARN  [org.key.services] (build-30) KC-SERVICES0047: metrics (org.jboss.aerogear.keycloak.metrics.MetricsEndpointFactory) is implementing the internal SPI realm-restapi-extension. This SPI is internal and may change without notice
keycloak-apikeys-keycloak-1  | 2024-05-23 15:12:36,390 WARN  [org.key.services] (build-30) KC-SERVICES0047: metrics-listener (org.jboss.aerogear.keycloak.metrics.MetricsEventListenerFactory) is implementing the internal SPI eventsListener. This SPI is internal and may change without notice
keycloak-apikeys-keycloak-1  | ERROR: Failed to run 'build' command.
keycloak-apikeys-keycloak-1  | ERROR: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
keycloak-apikeys-keycloak-1  | 	[error]: Build step io.quarkus.resteasy.reactive.server.deployment.ResteasyReactiveProcessor#setupEndpoints threw an exception: java.lang.RuntimeException: java.lang.RuntimeException: Failed to process method 'bio.overture.keycloak.resource.ApiKeyResource#issueApiKey'
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.common.processor.EndpointIndexer.createEndpoints(EndpointIndexer.java:328)
keycloak-apikeys-keycloak-1  | 	at io.quarkus.resteasy.reactive.server.deployment.ResteasyReactiveProcessor.setupEndpoints(ResteasyReactiveProcessor.java:722)
keycloak-apikeys-keycloak-1  | 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
keycloak-apikeys-keycloak-1  | 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
keycloak-apikeys-keycloak-1  | 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
keycloak-apikeys-keycloak-1  | 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
keycloak-apikeys-keycloak-1  | 	at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
keycloak-apikeys-keycloak-1  | 	at io.quarkus.builder.BuildContext.run(BuildContext.java:256)
keycloak-apikeys-keycloak-1  | 	at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
keycloak-apikeys-keycloak-1  | 	at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
keycloak-apikeys-keycloak-1  | 	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
keycloak-apikeys-keycloak-1  | 	at java.base/java.lang.Thread.run(Thread.java:840)
keycloak-apikeys-keycloak-1  | 	at org.jboss.threads.JBossThread.run(JBossThread.java:501)
keycloak-apikeys-keycloak-1  | Caused by: java.lang.RuntimeException: Failed to process method 'bio.overture.keycloak.resource.ApiKeyResource#issueApiKey'
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.common.processor.EndpointIndexer.createResourceMethod(EndpointIndexer.java:776)
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.common.processor.EndpointIndexer.createEndpoints(EndpointIndexer.java:417)
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.common.processor.EndpointIndexer.createEndpoints(EndpointIndexer.java:295)
keycloak-apikeys-keycloak-1  | 	... 12 more
keycloak-apikeys-keycloak-1  | Caused by: java.lang.RuntimeException: Could not create converter for java.util.ArrayList for method jakarta.ws.rs.core.Response issueApiKey(java.lang.String userId, java.util.ArrayList<java.lang.String> scopes, java.lang.String description) on class bio.overture.keycloak.resource.ApiKeyResource of type QUERY
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.server.processor.ServerEndpointIndexer.handleOtherParam(ServerEndpointIndexer.java:373)
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.server.processor.ServerEndpointIndexer.handleOtherParam(ServerEndpointIndexer.java:98)
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.common.processor.EndpointIndexer.extractParameterInfo(EndpointIndexer.java:1373)
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.common.processor.EndpointIndexer.createResourceMethod(EndpointIndexer.java:594)
keycloak-apikeys-keycloak-1  | 	... 14 more
keycloak-apikeys-keycloak-1  | Caused by: java.lang.RuntimeException: Failed to find converter for java.util.ArrayList
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.server.processor.generation.converters.GeneratedConverterIndexerExtension.extractConverterImpl(GeneratedConverterIndexerExtension.java:106)
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.server.processor.ServerEndpointIndexer.extractConverter(ServerEndpointIndexer.java:579)
keycloak-apikeys-keycloak-1  | 	at org.jboss.resteasy.reactive.server.processor.ServerEndpointIndexer.handleOtherParam(ServerEndpointIndexer.java:369)
keycloak-apikeys-keycloak-1  | 	... 17 more
keycloak-apikeys-keycloak-1  |
keycloak-apikeys-keycloak-1  | ERROR: Build failure: Build failed due to errors
@leoraba
Copy link
Contributor Author

leoraba commented Jul 12, 2024

Based on Keycloak release v23,
TL;DR Keycloak has switched from quarkus-resteasy to RESTEasy Reactive. SPI's with quarkus-resteasy are not compatible on V23.

This requires a code change to migrate SPIs to use RESTEasy Reactive

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant