我正在尝试更新 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();
}
}
答案 0 :(得分:0)
尽量把所有已知的用户字段放在第一位
/auth/admin/realms/<your realm>/users/<user id>
/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>
}