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

Spring Security 6.1升级遇JwtDecoder兼容问题,求全请求放行配置

解决Spring Security 6.1全请求放行配置问题

问题分析

升级到Spring Security 6.1后,原依赖WebSecurityConfigurerAdapter的配置方式已被弃用,若错误引入oauth2ResourceServer相关配置又不需要资源服务器,会触发JwtDecoder缺失或principalName cannot be empty错误。目标是配置所有请求无需认证即可访问。

解决方案

直接使用Spring Security 6.x的Lambda DSL配置方式,完全跳过认证逻辑:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            // 关闭CSRF(根据实际场景调整,若需要可移除该行)
            .csrf(csrf -> csrf.disable())
            // 放行所有请求,无需认证
            .authorizeHttpRequests(auth -> auth
                .anyRequest().permitAll()
            )
            // 禁用认证管理器,避免触发不必要的认证逻辑
            .authenticationManager(null)
            // 关闭安全上下文的强制保存,避免认证主体相关错误
            .securityContext(context -> context.requireExplicitSave(false));
        
        return http.build();
    }
}

关键说明

  • 不要引入任何oauth2ResourceServer相关依赖或配置,避免触发JWT解码器相关逻辑
  • anyRequest().permitAll()直接实现所有请求的无认证放行
  • 配置authenticationManager(null)和securityContext.requireExplicitSave(false),彻底关闭认证上下文初始化流程,规避principalName cannot be empty类错误
  • 若需保留CSRF防护,可删除csrf.disable()配置,按需调整安全规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:05:54