You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Active Directory时,如何从WebSecurityConfigurerAdapter迁移到SecurityFilterChain

在Azure AD依赖未更新时,兼容SecurityFilterChain的解决方案

问题背景

WebSecurityConfigurerAdapter已被废弃,迁移至SecurityFilterChain时,项目中使用的Azure Active Directory依赖(版本4.4.1)内部仍依赖WebSecurityConfigurerAdapter相关类(AadResourceServerWebSecurityConfigurerAdapter、AadWebSecurityConfigurerAdapter、AadResourceServerConfiguration、AadWebApplicationConfiguration),导致启动时抛出冲突错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource .....

Caused by: java.lang.IllegalStateException: Found WebSecurityConfigurerAdapter as well as SecurityFilterChain. Please select just one.

项目中Azure AD相关依赖配置如下:

<dependency>
  <groupId>com.azure.spring</groupId>
  <artifactId>spring-cloud-azure-starter-active-directory</artifactId>      
</dependency>
<dependency>
  <groupId>com.azure.spring</groupId>
  <artifactId>spring-cloud-azure-dependencies</artifactId>
  <version>4.4.1</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>

可行解决方案

方案1:禁用Azure AD自动配置的WebSecurityConfigurerAdapter

通过Spring Boot的自动配置排除机制,移除Azure AD提供的相关配置类,避免其注册WebSecurityConfigurerAdapter实例:

@SpringBootApplication(exclude = {
    AadWebApplicationConfiguration.class,
    AadResourceServerConfiguration.class
})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

之后手动编写SecurityFilterChain,并整合Azure AD的认证逻辑:

  • Web应用场景:手动配置OIDC客户端认证,使用AadOidcLoginConfigurer
  • 资源服务器场景:手动配置JWT认证,使用AadResourceServerConfigurer

Web应用场景示例代码:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests(auth -> auth
            .anyRequest().authenticated()
        )
        .apply(AadOidcLoginConfigurer.aadOidcLogin()); // 整合Azure AD OIDC登录
    return http.build();
}

方案2:升级Azure Spring Cloud依赖版本

后续版本(如5.x及以上)的spring-cloud-azure-starter-active-directory已完全迁移至SecurityFilterChain,不再依赖WebSecurityConfigurerAdapter。若业务允许,直接升级到最新稳定版即可解决冲突。

内容的提问来源于stack exchange,提问作者MehdiB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:50:43