JdbcOAuth2AuthorizedClientService 无法与 AadWebApplicationHttpSecurityConfigurer 一起使用,但可以与 AadWebSecurityConfigurerAdapter 一起使用

问题描述 投票:0回答:1

从 Spring Cloud Azure 4.x 迁移到 5.x 后,JdbcOAuth2AuthorizedClientService 似乎不再保存“OAuth2 授权客户端”。

之前的4.6代码:

@EnableWebSecurity
@Configuration
@EnableJdbcRepositories
public class AzureOauthClientConfiguration extends AadWebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
        http.authorizeRequests()
                .antMatchers("/auth/**")
                .authenticated();
    }

    @Bean
    JdbcOAuth2AuthorizedClientService oAuth2AuthorizedClientService(JdbcOperations jdbcOperations, ClientRegistrationRepository clientRegistrationRepository) {
        return new JdbcOAuth2AuthorizedClientService(jdbcOperations, clientRegistrationRepository);
    }
}

和 5.x 等效项:

@Configuration(proxyBeanMethods = false)
@EnableWebSecurity()
@EnableJdbcRepositories
public class AzureOauthClientConfiguration {

    @Bean
    SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.apply(AadWebApplicationHttpSecurityConfigurer.aadWebApplication())
                    .and()
                .authorizeHttpRequests()
                    .requestMatchers("/auth/**")
                    .authenticated();
        return http.build();
    }

    @Bean
    JdbcOAuth2AuthorizedClientService oAuth2AuthorizedClientService(JdbcOperations jdbcOperations, ClientRegistrationRepository clientRegistrationRepository) {
        return new JdbcOAuth2AuthorizedClientService(jdbcOperations, clientRegistrationRepository);
    }
}

两个 AAD 类的内部代码看起来实际上是等效的。有关如何使其工作或为什么它不再工作的任何指示?

spring-security spring-cloud-azure
1个回答
0
投票

不确定这是否是最好/正确的方法,但将以下 bean 添加到配置中有效:

@Bean
public OAuth2AuthorizedClientRepository authorizedClientRepository(OAuth2AuthorizedClientService authorizedClientService) {
    return new AuthenticatedPrincipalOAuth2AuthorizedClientRepository(authorizedClientService);
}
© www.soinside.com 2019 - 2024. All rights reserved.