代码之家  ›  专栏  ›  技术社区  ›  pnewhook

如何使用OAuth2AuthorizedClientManager与OAuth2AuthorizedClientService

  •  0
  • pnewhook  · 技术社区  · 6 年前

    我使用springsecurity5在springboot2中实现OAuth2客户机。我不知道该怎么用 OAuth2AuthorizedClientManager 与 OAuth2AuthorizedClientService . OAuth2AuthorizedClientManger是在5.2中引入的,因此它是一个较新的API,但是OAuth2AuthorizedClientService看起来更像是一个更精致的客户端接口。我预料到了 OAuthe2AuthorizedClientService 可以配置 OAuth2AuthorizedClientManager 但事实似乎并非如此。

    重要的是,我需要定制 OAuth2AccessTokenResponseHttpMessageConverter 发送到自定义服务器的授权请求。可以在 OAuth2AuthorizedClient Manager 但我不知道该怎么做 OAuthe2授权客户端服务 .

      @Bean
      public OAuth2AuthorizedClientManager authorizedClientManager(ClientRegistrationRepository clientRegistrationRepository,
                                                                   OAuth2AuthorizedClientService oAuth2AuthorizedClientService) {
    
        DefaultClientCredentialsTokenResponseClient defaultClientCredentialsTokenResponseClient = new DefaultClientCredentialsTokenResponseClient();
        defaultClientCredentialsTokenResponseClient.setRequestEntityConverter(new OAuth2ClientCredentialsGrantJWTAssertionRequestEntityConverter());
        OAuth2AuthorizedClientProvider authorizedClientProvider =
            OAuth2AuthorizedClientProviderBuilder.builder()
              .clientCredentials(clientCredentialsGrantBuilder -> {
    
                clientCredentialsGrantBuilder.accessTokenResponseClient(defaultClientCredentialsTokenResponseClient);
              })
              .build();
        OAuth2AuthorizedClientManager authorizedClientManager
            = new AuthorizedClientServiceOAuth2AuthorizedClientManager(clientRegistrationRepository, oAuth2AuthorizedClientService);
        ((AuthorizedClientServiceOAuth2AuthorizedClientManager)authorizedClientManager).setAuthorizedClientProvider(authorizedClientProvider);
        return authorizedClientManager;
      }
    
    0 回复  |  直到 6 年前