【发布时间】:2021-07-01 15:23:33
【问题描述】:
我正在尝试在 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;
}
【问题讨论】:
-
您能否添加相关代码来引发您的问题?您创建 userRepresenation 的部分
-
响应响应 = keycloak.realm(keycloakProperties.getRealm()).users().create(userRepresentation); log.info("响应码 {}", response.getStatus()); // 如果我设置了 userRepresentation.setCredentials(Arrays.asList(createPasswordCredentials(userModel.getPassword()))),则返回 400;
-
错误可能在于您如何填写
userRepresentation。您能否编辑您的问题并添加有关如何创建和填充此变量的完整代码(以及您的CredentialRepresentation的代码,否则真的很难提供帮助 -
:-( 我完全尝试了您的代码(纯 java,不是在 spring 中)并收到 201 响应(设置密码的新用户),同样使用 KC 12.0.4
-
我使用了来自org.keycloak的
keycloak-admin-client:12.0.4,并导入了org.keycloak.admin.client.Keycloak
标签: spring spring-boot keycloak keycloak-rest-api keycloak-admin-cli