小编sen*_*t_6的帖子

Spring Boot:调用 OAuth2 保护的 REST 服务

我有一个使用 Spring Boot 构建的现有 REST API。在服务层的一个函数中,我需要调用受 OAuth2(客户端凭据)保护的外部 REST 服务。

使用 Spring Boot 2.3,我意识到OAuth2RestTemplate它已被弃用,所以我选择使用WebClient.

按照本教程 - https://www.baeldung.com/spring-webclient-oauth2,我现在的WebClientConfig课程如下:

@Configuration
class WebClientConfig {    
    @Bean
    fun webClient(
            clientRegistrations: ClientRegistrationRepository?,
            authorizedClients: OAuth2AuthorizedClientRepository?): WebClient? {
        val oauth2 = ServletOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrations, authorizedClients)
        oauth2.setDefaultOAuth2AuthorizedClient(false)
        oauth2.setDefaultClientRegistrationId("test")
        return WebClient.builder()
                .apply(oauth2.oauth2Configuration())
                .build()
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的属性文件中,我有:

spring:
  security:
    oauth2:
      client:
        registration:
          test:
            client-id: <redacted>
            client-secret: <redacted>
            authorization-grant-type: client_credentials
        provider:
          test:
            token-uri: <redacted>
Run Code Online (Sandbox Code Playgroud)

我什至无法判断这是否有效,因为在访问与此 OAuth2 身份验证无关的 API 上的不同端点时,我不断收到以下错误:

java.lang.IllegalArgumentException: Invalid Authorization Grant Type (client_credentials) for Client Registration …
Run Code Online (Sandbox Code Playgroud)

java spring oauth-2.0 kotlin spring-boot

5
推荐指数
1
解决办法
7240
查看次数

标签 统计

java ×1

kotlin ×1

oauth-2.0 ×1

spring ×1

spring-boot ×1