Initially, I couldn't create a client-level role using keycloak-admin-client. I decided to try to do this via the API using Postman in order to make sure that it doesn't work out that way either.
I think I'm sending the request correctly. The authorization token in the headers and the json representation of the role in the body.enter image description hereenter image description here
I claim that the client exists, the user I use has administrator rights.
In my java project, it looks like this:
public int createClient(String clientId) { ClientRepresentation clientRepresentation = new ClientRepresentation(); clientRepresentation.setClientId(clientId); clientRepresentation.setPublicClient(false); clientRepresentation.setEnabled(true); clientRepresentation.setServiceAccountsEnabled(true); Response response = clientsManager.create(clientRepresentation); int statusCode = response.getStatus(); log.info("HTTP Status of client creation = {}", statusCode); if (statusCode == 201) fillClientWithRoles(clientId); return statusCode; } public void fillClientWithRoles(String clientId) { ClientResource clientResource = clientsManager.get(clientId); log.info("client: {}", clientResource); for (ClientRole role : ClientRole.values()) { RoleRepresentation roleRepresentation = new RoleRepresentation(); roleRepresentation.setName(role.name()); roleRepresentation.setClientRole(true); roleRepresentation.setComposite(false); clientResource.roles().create(roleRepresentation); } }
The Keycloak object is configured correctly. I can, for example, successfully create new users
I reread a bunch of articles, turned to bots for advice, but I still haven't found a solution that would explain the cause of the 404 error in this request and help solve the problem
2024-05-28T14:53:08.288+03:00 ERROR 14920 --- [portal-ms] [io-60005-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: jakarta.ws.rs.NotFoundException: HTTP 404 Not Found] with root causejakarta.ws.rs.NotFoundException: HTTP 404 Not Found at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:242) ~[resteasy-client-6.2.9.Final.jar:6.2.9.Final] at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.DefaultEntityExtractorFactory$3.extractEntity(DefaultEntityExtractorFactory.java:41) ~[resteasy-client-6.2.9.Final.jar:6.2.9.Final] at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:136) ~[resteasy-client-6.2.9.Final.jar:6.2.9.Final] at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:103) ~[resteasy-client-6.2.9.Final.jar:6.2.9.Final] at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:102) ~[resteasy-client-6.2.9.Final.jar:6.2.9.Final] at jdk.proxy2/jdk.proxy2.$Proxy192.create(Unknown Source) ~[na:na] at ru.gnivc.portalservice.service.KeycloakService.fillClientWithRoles(KeycloakService.java:124) ~[classes/:na] at ru.gnivc.portalservice.service.KeycloakService.createClient(KeycloakService.java:109) ~[classes/:na] at ru.gnivc.portalservice.service.CompanyService.createCompany(CompanyService.java:27) ~[classes/:na] at ru.gnivc.portalservice.controller.CompanyController.createCompany(CompanyController.java:22) ~[classes/:na