likes
comments
collection
share

Spring Security 401和403错误解析及调试:从源码到调试技巧

作者站长头像
站长
· 阅读数 9

问题

在配置了 Spring Security 白名单路径前提下,访问仍然是 401(未授权)或 403 (禁止访问),没意外情况基本是白名单配置未生效或者路径配置错误。

但大多数人遇到这种问题不知如何下手,只知道被过滤器拦截,至于哪个拦截过滤器,不知道!

所以本篇把 Spring Security 的白名单路径加载和拦截校验的关键源码贴出来,如果再遇到这类问题便可自行调试。

因为 SpringBoot2 使用的 AbstractSecurityInterceptor 进行路径拦截校验,但是在 SpringBoot3 取而代之的是 AuthorizationFilter,所以这里区分两个版本,对号入座即可。

SpringBoot 2 + Spring Security Web 5.x

调试入口: AbstractSecurityInterceptor#beforeInvocation

  • AbstractSecurityInterceptor#beforeInvocation 校验前获取白名单配置

Spring Security 401和403错误解析及调试:从源码到调试技巧

SpringBoot 3 + Spring Security Web 6.x

调试入口: AuthorizationFilter#doFilter

完整调用栈:

Spring Security 401和403错误解析及调试:从源码到调试技巧

PatternsRequestCondition#getMatchingCondition 根据请求路径匹配白名单规则 Spring Security 401和403错误解析及调试:从源码到调试技巧

AntPathMatcher#doMatch 请求路径匹配白名单规则具体细节逻辑,包含请求路径参数如何匹配映射

Spring Security 401和403错误解析及调试:从源码到调试技巧

项目源码

gitee.com/youlaitech/…