在Java中创建密钥隐藏角色时出现错误400错误的请求

时间:2019-05-10 09:23:58

标签: java keycloak

我尝试从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)

5 个答案:

答案 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)

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