试图将1.3.x中的“旧” Sprint Boot + Spring OAuth2应用程序升级到2.1.5.RELEASE或当时的情况。
我只是试图一次做到这一点。 我将其从Spring Boot 1.3升级到1.4,一切似乎都正常运行。
问题是从1.4到1.5。基本上,受资源服务器保护的Web服务似乎根本没有受到攻击(我相信它会退回到WebSecurity / User工作流程,返回302重定向到登录页面)。
从日志中可以看到,它甚至没有试图将我的请求与在 ResourceServerConfigurerAdapter 中定义的模式进行匹配。
handler
换句话说,这些“反对”都不像我在configure(HttpSecurity http)中配置的那样,简单地是:
CustomCell
Sprint Boot 1.4中的相同代码可以正常工作,并且确实按照预期的模式/ v1 / **检查传入的请求。
我已经阅读了Spring Boot 1.5的发行说明,并且我认为它可能与this有关:
[...]使用@EnableWebSecurity将关闭Web安全性的所有自动配置,从而使您可以完全控制。
记住,该应用程序在Spring Boot 1.3和1.4中运行良好。当我升级到1.5时,我遇到了这个问题。
更新06/07: 自动连接FilterChainProxy以查看所涉及的过滤器并在2个Spring Boot版本之间进行比较。如果我理解正确,那就是问题所在。 在1.4.x版本中,FilterChainProxy内部的过滤器链的顺序基本上是:
现在使用1.5.x时,以上的#2和#3会以某种方式进行切换。这就解释了为什么我的所有Web服务请求都没有到达我的Web服务端点。 不明白为什么订单搞乱了(我在配置中不使用任何@Order)。我该来看看@Order的时候了...
还有其他人遇到过这个问题吗?您是如何解决的?
答案 0 :(得分:0)
果然,诀窍是在我的 WebSecurity ConfigurerAdapter 扩展名中添加以下内容:
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
在SO here上找到了答案。