小编pen*_*ark的帖子

如何使用 client_credentials 从资源服务器访问另一个 oauth2 资源?

我想使用 client_credentials 从反应性资源服务器访问另一个受 oauth2 保护的资源。我使用颁发的令牌访问资源服务器的部分正在工作,但没有使用 webclient 调用其他资源。

使用 UnAuthenticatedServerOAuth2AuthorizedClientRepository 我得到serverWebExchange must be null,并使用 AuthenticatedPrincipalServerOAuth2AuthorizedClientRepository 我得到principalName must be null

只要将客户端称为CommandLineRunner. 我在 stackoverflow 上找到的其他建议都不起作用。

我在这里缺少什么?我正在使用 Spring Security 5.2.0 和 Spring Boot 2.2.0。

客户端配置:

@Configuration
public class ClientSecurityConfig {

    // UnAuthenticatedServerOAuth2AuthorizedClientRepository version

    @Bean
    WebClient webClient(ReactiveClientRegistrationRepository clientRegistrations) {
        ServerOAuth2AuthorizedClientExchangeFilterFunction oauth =
                new ServerOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrations, new UnAuthenticatedServerOAuth2AuthorizedClientRepository());

        return WebClient.builder()
                .filter(oauth)
                .build();
    }

    @Bean
    ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider(CustomClientConfig clientConfig) {
        return ReactiveOAuth2AuthorizedClientProviderBuilder.builder()
                        .clientCredentials(clientCredentialsGrantBuilder ->
                                clientCredentialsGrantBuilder.accessTokenResponseClient(new CustomClient(clientConfig))) // Used to send extra …
Run Code Online (Sandbox Code Playgroud)

spring-security spring-boot spring-security-oauth2 spring-webflux

3
推荐指数
1
解决办法
6067
查看次数