我使用 Spring Boot 和 REST 模板。我想获取用户连接的信息

问题描述 投票:0回答:1

我使用 Spring Boot 和 REST 模板。我想获取用户连接的信息,但只有当我连接到管理员帐户而不是作者帐户时,我才能获取信息。这是我的代码

public UserDto getInfo() throws 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);
    }
java spring-boot keycloak spring-resttemplate
1个回答
0
投票

Spring Security OAuth2 客户端默认应使用

userinfo
调用
org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService
端点,并将用户属性添加到
OAuth2UserAuthority

© www.soinside.com 2019 - 2024. All rights reserved.