背景介绍
老的项目基于spring-boot-1.5.x、spring-security-oauth2-2.x实现的sso,在近期的安全漏洞扫描中发现如下2个漏洞:
| 漏洞 | 涉及jar | 修复方案 |
|---|---|---|
| Spring Framework JDK >= 9 远程代码执行漏洞(CVE-2022-22965) | spring-core-4.3.12.RELEASE.jar | 升级官方安全版本 >= 5.3.18/5.2.20 |
| Spring Security RegexRequestMatcher 认证绕过漏洞(CVE-2022-22978) | spring-security-core-4.2.3.RELEASE.jar | 5.5.x 版本使用者建议升级至5.5.7及其以上; 5.6.x 版本使用者建议升级至5.6.4及其以上 |
然后笔者的同事将spring-boot升级到了2.5.14;将spring-security-oauth2升级到了2.1.0、RELEASE,这样一来,spring-core的版本被间接的升级到了5.3.20,spring-security-core版本变成了5.5.8(主要是spring-boot决定的)。
因为spring-boot-1.x和2.x之间的差距,同步的对项目依赖和代码做了微调。这里不再列出。不是今天的重点。
项目终于能成功启动了,但是一个致命的问题出来了,登录成功后,不能正确的回跳到redirect_uri指定的地址。这里如果你对spring-security-oauth2实现登录认证不熟悉的,可以参考

本文介绍了在将Spring Boot从1.5.x升级到2.5.14,Spring Security OAuth2从2.x升级到2.1.0.RELEASE后,遇到的登录回跳问题。问题在于UsernamePasswordAuthenticationFilter未拦截POST请求,导致登录失败。通过源码分析发现是NotOauthRequestMatcher匹配规则变化引起的。解决方案是调整NotOauthRequestMatcher的匹配规则,避免截胡自定义登录接口。

1万+

被折叠的 条评论
为什么被折叠?



