在 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”(不仅如此),这很重要
我尝试从我的 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”(不仅如此),这很重要