我正在尝试在 spring boot 项目中使用 keycloak 的 /users 端点创建用户。这些是我遵循的步骤首先在主领域和 admin-cli 客户端中创建了一个管理员。用它来获取 keycloak 的实例以进行进一步的操作。
return Keycloak.getInstance(
keycloakProperties.getAuthServerUrl(),
"master",
adminConfig.getUserName(),
adminConfig.getPassword(),
"admin-cli");
如果我不在用户中添加客户端表示,我可以创建用户。如果我在 userRepresentation 对象中添加 CredentialRepresentation,我会收到 BadRequest 错误(400 代码),没有任何详细信息。我查看了也没有用的 keycloak 服务器日志。作为尝试,我先创建用户并稍后重置密码,然后还创建了用户,但无法使用重置密码端点设置密码(同样的错误)。如文档中所述,我已将 userRepresentation 的启用属性设置为真的。Keycloak 版本:12.0.4,Spring Boot 版本:2.1.6.RELEASE 我试图从收到的响应中读取实体,但也失败了。任何解决问题的帮助将不胜感激。// 用户创建代码
UserRepresentation userRepresentation = new UserRepresentation();
userRepresentation.setUsername(userModel.getEmail());
userRepresentation.setEmail(userModel.getEmail());
userRepresentation.setCredentials(Arrays.asList(createPasswordCredentials(userModel.getPassword())));
userRepresentation.setEnabled(true);
Keycloak keycloak = getKeycloakInstance(keycloakProperties);
Response response = keycloak.realm(keycloakProperties.getRealm()).users().create(userRepresentation);
log.info("Response Code {}", response.getStatus());
CredentialRepresentation 代码:
private static CredentialRepresentation createPasswordCredentials(String password) {
CredentialRepresentation passwordCredentials = new CredentialRepresentation();
passwordCredentials.setTemporary(false);
passwordCredentials.setType(CredentialRepresentation.PASSWORD);
passwordCredentials.setValue(password);
return passwordCredentials;
}