在 Java 中创建 keycloak 角色时出现错误 400 错误请求

Error 400 bad request when creating keycloak roles in Java

我尝试从我的 Java 程序中创建一个 Keycloak 角色。我能够创建用户,所以这不是连接到我的 Keycloak 服务器的问题,但是角色的创建函数总是给我一个错误 400 错误请求。从Java创建角色的解决方案是什么?

Keycloak kc = KeycloakBuilder.builder()
            .serverUrl("http://localhost:8080/auth")
            .realm("master")
            .grantType(OAuth2Constants.PASSWORD)
            .username("***")
            .password("***")
            .clientId("admin-cli")
            .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
            .build();

RoleRepresentation roleRepresentation = new RoleRepresentation();
roleRepresentation.setName(nomRole);
roleRepresentation.setClientRole(true);
kc.realm("master").roles().create(roleRepresentation);

error : Exception in thread "main" javax.ws.rs.BadRequestException: HTTP 400 Bad Request at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:215) at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.DefaultEntityExtractorFactory.extractEntity(DefaultEntityExtractorFactory.java:50) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:150) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112) at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) at com.sun.proxy.$Proxy25.create(Unknown Source) at Main.CreateKeycloakRole(Main.java:37) at Main.main(Main.java:96)

可能的原因之一是 nomRole 为空。

我可以使用您的代码与 Keycloak 客户端 4.8.3 和 Keycloak 服务器 4.8.3 创建一个角色。

我已经尝试使用 Keycloak 4.8.3 版本,现在它可以正常工作了!我认为我的版本太旧无法处理角色创建!对我来说,解决方案只是采用更新版本!感谢大家的帮助!

我升级到最新的 jboss/keycloak 图像,同样的代码对我有用

Consent Required 为客户设置为 ON 时,我也遇到了同样的问题。 如果我将其设置为 OFF 它会起作用,我正在调查一个问题。

您应该将客户端访问类型设置为“public”(不仅如此),这很重要