我尝试从Java程序创建Keycloak角色。我能够创建用户,因此与我的Keycloak服务器的连接不是问题,但是角色的create函数总是给我一个错误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);
错误: 线程“主”中的异常javax.ws.rs.BadRequestException:HTTP 400错误的请求 在org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:215) 在org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.DefaultEntityExtractorFactory $ 3.extractEntity(DefaultEntityExtractorFactory.java:50)处 在org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:150) 在org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112) 在org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) 在com.sun.proxy。$ Proxy25.create(未知来源) 在Main.CreateKeycloakRole(Main.java:37) 在Main.main(Main.java:96)
答案 0 :(得分:0)
可能的原因之一是nomRole
为空。
我可以通过Keycloak客户端4.8.3和Keycloak服务器4.8.3使用您的代码来创建角色。
答案 1 :(得分:0)
我已经尝试了Keycloak 4.8.3版本,现在可以正常使用了!我认为我的版本太旧,无法处理角色创建!对我来说,解决方案就是采用新版本!谢谢大家的帮助!
答案 2 :(得分:0)
我已升级到最新的jboss / keycloak映像,并且相同的代码对我有用
答案 3 :(得分:0)
当客户端将Consent Required
设置为ON
时,我也遇到了同样的问题。
如果我将其设置为OFF
可以使用,那么我正在调查问题。
答案 4 :(得分:0)
您应该将客户端访问类型设置为“公开”(不仅如此),这很重要