Spring security Spring OAuth2RestTemplate用于访问资源服务器

Spring security Spring OAuth2RestTemplate用于访问资源服务器,spring-security,oauth-2.0,spring-security-oauth2,azure-ad-graph-api,Spring Security,Oauth 2.0,Spring Security Oauth2,Azure Ad Graph Api,我试图使用authorization_code grant type创建一个OAuth2Client,我可以授权用户并重定向url,但是当我尝试使用OAuth2RestTemplate访问资源时,我得到了401个未授权 我需要为OAuth2RestTemplate添加授权头做些什么吗?我认为Spring-oauth2将自己负责将头添加到OAuthRestTemplate中 也通过跟踪日志进行了验证 @GetMapping("/") public OAuth2User hello(@Aut

我试图使用authorization_code grant type创建一个OAuth2Client,我可以授权用户并重定向url,但是当我尝试使用OAuth2RestTemplate访问资源时,我得到了401个未授权 我需要为OAuth2RestTemplate添加授权头做些什么吗?我认为Spring-oauth2将自己负责将头添加到OAuthRestTemplate中

也通过跟踪日志进行了验证

@GetMapping("/")
    public OAuth2User hello(@AuthenticationPrincipal OAuth2User oAuth2User){
        logger.info("User="+oAuth2User.getAttributes().get("unique_name"));
        String response = oAuth2RestTemplate.getForObject("https://localhost:8090/me", String.class);
        return oAuth2User;
    }


@Bean
    public OAuth2RestTemplate oauth2RestTemplate(OAuth2ClientContext oauth2ClientContext) {
        return new OAuth2RestTemplate(azureDetails(),oauth2ClientContext);
    }

 @Bean
    public AuthorizationCodeResourceDetails azureDetails() {
        AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails();
        details.setClientId("myclientId");
        details.setClientSecret("myclientsecret");
        details.setAccessTokenUri("https://login.microsoftonline.com/common/oauth2/token");
        details.setUserAuthorizationUri("https://login.microsoftonline.com/common/oauth2/authorize");
details.setScope(Arrays.asList("openid","profile","User.Read","Calendars.Read","Chat.Read","Files.Read","Mail.Read","Notes.Read","Tasks.Read"));
        return details;
    }

OAuth2RestTemplate应该在MS Graph API上执行GET操作并获得响应

您需要更新AccessTokenUri和UserAuthorizationUri,您的AccessTokenUri应该是
https://login.microsoftonline.com/common/oauth2/v2.0/token
并且您的UserAuthorizationUri应该是
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
。有关更多详细信息,请参阅

感谢@md farid uddin kiron,我意识到我在使用oauth2时获得了v1 URL