Trying to setup a keycloak admin client in spring boot 3 to manage Keycloak users, clients, roles and realms. Most guides that are available are for version 18.0.0 and bellow but I am using version 21.1.1 because of compatibility with spring security version used in the base project.
When I hit the keycloak admin APIs i.e try to create, retrieve users, I am getting HTTP 404 not found
javax.ws.rs.NotFoundException: HTTP 404 Not Found
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:270) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:240) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:64) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:154) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at jdk.proxy2/jdk.proxy2.$Proxy122.grantToken(Unknown Source) ~[na:na]
at org.keycloak.admin.client.token.TokenManager.grantToken(TokenManager.java:99) ~[keycloak-admin-client-21.1.1.jar:21.1.1]
at org.keycloak.admin.client.token.TokenManager.getAccessToken(TokenManager.java:75) ~[keycloak-admin-client-21.1.1.jar:21.1.1]
at org.keycloak.admin.client.token.TokenManager.getAccessTokenString(TokenManager.java:70) ~[keycloak-admin-client-21.1.1.jar:21.1.1]
at org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:52) ~[keycloak-admin-client-21.1.1.jar:21.1.1]
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.filterRequest(ClientInvocation.java:767) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:491) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:152) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) ~[resteasy-client-4.7.7.Final.jar:4.7.7.Final]
at jdk.proxy4/jdk.proxy4.$Proxy149.list(Unknown Source) ~[na:na]
at com.avf.customerservice.infrastructure.iam.impl.v1.KeycloakServiceImpl.getCustomers(KeycloakServiceImpl.kt:39) ~[main/:na]
A few things worth noting, when debugging the keycloak configuration that was used, I view that the authToken is null as seen below
Keycloak setup - using the admin account
I have admin user given all the roles including the admin role
Keycloak setup - using a client
Optionally, I have a client with service roles provided and admin is included
Keycloak Spring boot config using admin account
Keycloak spring boot config using client service
Keycloak Service functionalities
Upto this point, with a rest endpoint to get users and create them, I would expect a success but I end up with 404 having the mentioned stack trace
What is it that could be missing?