小编tux*_*uxy的帖子

为什么 Spring Boot WebClient OAuth2 (client_credentials) 要求为每个请求提供新令牌?

我正在尝试创建一个 Spring Boot REST 应用程序,该应用程序必须对另一个受 OAuth2 保护的应用程序进行远程 REST 调用。

第一个应用程序使用 Reactive WebClient 来调用第二个 OAuth2 REST 应用程序。我已经配置了WebClientgrant_type“client_credentials”。

应用程序.yml

spring:
  security:
    oauth2:
      client:
        provider:
          client-registration-id:
            token-uri: http://localhost:8080/oauth/token
        registration:
          client-registration-id:
            authorization-grant-type: client_credentials
            client-id: public
            client-secret: test
            client-authentication-method: post
            scope: myscope
Run Code Online (Sandbox Code Playgroud)
@Configuration
public class WebClientConfig {

    @Bean
    WebClient webClient(ReactiveClientRegistrationRepository clientRegistrations) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(
                clientRegistrations, new UnAuthenticatedServerOAuth2AuthorizedClientRepository());
        oauth.setDefaultClientRegistrationId("client-registration-id");
        return WebClient.builder().filter(oauth).build();
    }

}
Run Code Online (Sandbox Code Playgroud)
@Component
public class WebClientChronJob {

    Logger logger = LoggerFactory.getLogger(WebClientChronJob.class);

    @Autowired
    private WebClient webClient;

    @Scheduled(fixedRate = 5000)
    public void …
Run Code Online (Sandbox Code Playgroud)

java spring oauth-2.0 spring-boot

6
推荐指数
2
解决办法
9874
查看次数

标签 统计

java ×1

oauth-2.0 ×1

spring ×1

spring-boot ×1