我使用 Spring Boot 和 Rest 模板,我想获取用户连接的信息,但只要我连接到管理员帐户和作者帐户,我就会得到信息,不,这是我的代码
public UserDto getInfo() 抛出 APIErrorException {
UserInfoResponse userInfoResponse = null;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("token", accessToken);
map.add(CLIENT_ID, admin_Client);
map.add(CLIENT_SECRET, secret_key);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
try {
userInfoResponse = restTemplate.postForEntity(userInfoUrl, request, UserInfoResponse.class).getBody();
} catch (Exception e) {
throw new APIErrorException(ErrorCode.E444);
}
UserKeycloak userKeycloak = userMapperService.fromUserInfoResponse(userInfoResponse);
return userMapperService.convertKeycloakToDto(userKeycloak);
}
Spring Security OAuth2 客户端默认应使用
userinfo
调用 org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService
端点,并将用户属性添加到 OAuth2UserAuthority
。