【发布时间】:2017-11-24 07:34:21
【问题描述】:
我想更新用户详细信息。例如我从 keycloak 管理控制台在“演示”领域创建了用户(k1)。我有一个 java 客户端,我想更新用户(k1)的详细信息。更改用户 k1 的电子邮件地址。
我确实使用了管理客户端(Rest API),如下所示。
public void updateEmail(final String newEmailAddress) {
try {
final AccessToken accessToken = getToken();
Keycloak keycloak = KeycloakBuilder.builder().serverUrl(this.getDeployment().getAuthServerBaseUrl())
.realm(this.getDeployment().getRealm()).username("k1").password("123").clientId(ADMIN_CLIENT)
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()).build();
UserResource userResource = keycloak.realm(this.getDeployment().getRealm()).users()
.get(accessToken.getSubject());
UserRepresentation user = userResource.toRepresentation();
user.setEmail(newEmailAddress);
userResource.update(user);
} catch (Exception exception) {
exception.printStackTrace();
}
}
但我想在不使用管理客户端的情况下做同样的事情。
【问题讨论】:
-
没有 REST 客户端怎么办?这是不可能的,或者您使用控制台或 REST 端点...
-
我正在使用管理员帐户来更新用户的电子邮件。即keycloak 管理客户端。我需要另一种方式。
-
您是否找到了更多关于让用户在不使用管理员凭据的情况下使用访问令牌更新其信息的推荐方法的信息?我一直在四处寻找,暂时找不到。
-
这个答案中有两个选项,update-own-profile,用户服务或帐户配置文件主题。