keycloak - 如何通过 keycloak 端点更新用户帐户电子邮件?

时间:2021-03-16 22:25:22

标签: keycloak

我正在尝试更新 keycloak 上的用户电子邮件,但它抛出此异常

<块引用>

org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 内部服务器错误:[无正文] 在 org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:100) 在 org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:188) 在 org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125) 在 org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) 在 org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:818)

public String UpdateUserData(String email, String userId) {
        try {
            HttpHeaders headers = new HttpHeaders();
            headers.set("Authorization", "bearer " + getToken(externalClientId));
            headers.setContentType(MediaType.APPLICATION_JSON);
            headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
            MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
            map.add("email", email);

            HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
            this.client.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
            this.client.exchange(clientToConnectionProperties.get(externalClientId).URI +"/users/"+userId, HttpMethod.PUT, request, Void.class);
            return HttpStatus.OK.name();
        } catch (RestClientException e) {
            e.printStackTrace();
            return HttpStatus.INTERNAL_SERVER_ERROR.name();
        }
    }

1 个答案:

答案 0 :(得分:0)

尽量把所有已知的用户字段放在第一位

  1. 获取/auth/admin/realms/<your realm>/users/<user id>
  2. PUT /auth/admin/realms/<your realm>/users/<user id>。 标题:
Accept: application/json
Authorization: Bearer <access_token>
Content-Type: application/json;charset=UTF-8

Body(从对第 1 步请求的响应中获取值):

{
    "id": "<user id>",
    "username": "<username>",
    "enabled": true,
    "emailVerified": true,
    "access": {
        "manageGroupMembership": true,
        "view": true,
        "mapRoles": true,
        "impersonate": true,
        "manage": true
    },
    "email": "<email>
}