通过keycloak管理客户端在keycloak中创建用户返回400

时间:2017-09-05 14:02:03

标签: java keycloak

我想通过keycloak管理客户端创建用户,但我获得400状态。

  • 我无法激活keycloak客户端的任何日志,所以我不知道它执行的http调用。
  • 我已设法通过邮递员创建用户。
  • 搜索并让用户工作(见下文)

您是否在我的代码中看到任何错误?

       Keycloak keycloak = Keycloak.getInstance(keycloakUrl,"master",
     keycloakAdminUsername, keycloakAdminPassword,
                     keycloakAdminClient);
            UserRepresentation user = new UserRepresentation();
            user.setUsername("username");
            user.setFirstName("firstname");
            user.setEmail("kjhkjh@gmail.com");
            user.setRequiredActions(Collections.<String>emptyList());
            user.setEnabled(true);

            Response response = keycloak.realm(realm).users().create(user);
            if (response.getStatus() != 201) {
                log.error("Couldn't create user, status:{}", response.getStatus());
                } else {
                    log.info("User# created", user.getUsername());
                    log.info("Keycloak response status: {}", 
response.getStatus());
                    }
  

无法创建用户,状态:400

问题是,如果我尝试让用户使用相同的keycloak实例,它就可以工作。

UserResource userX = keycloak.realm(realm).users().get("8c1d29fd-8d6b-4dea-817f-3fc1421096f0");
log.debug(userX.toRepresentation().getUsername());

同样,如果我使用搜索

log.debug("Getting users from keycloak");
    List<UserRepresentation> users = keycloak.realm(realm).users().search(username, 0, 10);
    users.forEach(user -> log.info("username: {}", user.getUsername()));

1 个答案:

答案 0 :(得分:0)

好吧,我找到了解决方案,对我来说有点愚蠢。客户端需要与keycloak服务器版本相同。以我为例,我得到了keycloak管理客户端的2.0.0.Final版本,因为keycloak服务器是2.0.0。就我所理解的而言,这完全取决于UserRepresentation类。