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

Spring Authorization Server中openid-configuration返回404原因排查

问题原因分析

  • Spring Security的多个SecurityFilterChain是按@Order注解指定的优先级执行的,数值越小优先级越高。你的pre过滤器链因为@Order优先级高于OIDC相关的过滤器链,会先拦截所有请求(包括/.well-known/openid-configuration)。
  • 即使你把pre链简化为返回空的HttpSecurity实例,这个链依然会匹配所有请求并完成处理流程——Spring Security会默认允许请求通过,但此时请求会直接进入DispatcherServlet,而不会流转到后面负责处理OIDC端点的过滤器链。
  • /.well-known/openid-configuration这个端点是由Spring Authorization Server内部的控制器处理的,只有当请求被OIDC专属的过滤器链拦截到,才会被路由到对应的控制器。如果请求被pre链先处理并放行到Servlet,DispatcherServlet会把它当作静态资源查找,自然返回404。

解决方法

  • 调整pre链的优先级:确保pre链的@Order数值大于OIDC过滤器链的默认优先级。Spring Authorization Server的OIDC链默认优先级是SecurityProperties.BASIC_AUTH_ORDER - 10(BASIC_AUTH_ORDER默认值为100,即OIDC链优先级为90),所以你可以给pre链设置@Order(100)或更高数值,让OIDC链先处理相关请求。
  • 限定pre链的处理路径:在pre链的HttpSecurity配置中,通过.requestMatchers()明确指定该链负责处理的请求路径(比如仅处理/api/pre/**这类特定路径),这样/.well-known/openid-configuration就不会被pre链拦截,会自动流转到OIDC链处理。示例配置如下:
@Bean
@Order(1)
public SecurityFilterChain preSecurityFilterChain(HttpSecurity http) throws Exception {
    http
        .requestMatchers(matchers -> matchers.antMatchers("/api/pre/**"))
        .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
        // 其他pre链的配置
    return http.build();
}
  • 移除不必要的pre链:如果pre链没有实际业务需求,直接移除该@Bean即可恢复正常。

内容的提问来源于stack exchange,提问作者Simao Gomes Viana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:44:51