【问题标题】:Migrating from Spring Boot 1.4 to 1.5 with OAuth2使用 OAuth2 从 Spring Boot 1.4 迁移到 1.5
【发布时间】:2019-10-22 06:14:48
【问题描述】:

尝试将 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 中定义的模式匹配。

[...].AntPathRequestMatcher::matches::::::Checking match of request : '/v1/private/user'; against '/oauth/token'
...(same as above against other paths)...
[...].OrRequestMatcher::matches::::::No matches found

换句话说,这些“反对”都不像我在 configure( HttpSecurity http ) 中配置的那样:

http
        .authorizeRequests()
        .antMatchers( "/v1/**" )
        .permitAll()
        .and().csrf().disable()

Sprint Boot 1.4 中的相同代码可以正常工作,它会按预期根据该模式 /v1/** 检查传入请求。

我已经阅读了 Spring Boot 1.5 的发行说明,我认为它可能与 this 有关:

[...] 使用 @EnableWebSecurity 将关闭网络安全的所有自动配置,从而让您完全控制。

记住,该应用程序在 Spring Boot 1.3 和 1.4 中运行良好。当我升级到 1.5 时,我遇到了这个问题。

06/07 更新: Autowired FilterChainProxy 查看涉及的过滤器并在 2 个 Spring Boot 版本之间进行比较。如果我理解正确,那就是问题所在。 在 1.4.x 版本中,FilterChainProxy 内部过滤器链的顺序基本是:

  1. OAuth auth* 过滤器链,匹配 /oauth/token、/oauth/token_key 和 /oauth/check_token。
  2. OAuth“受保护”端点。我相信资源服务器配置中的 HttpSecurity 中定义的东西。此处的过滤器链为此使用“NotOAuthRequestMatcher”匹配器。我相信,该链中的重要过滤器是 OAuth2AuthenticationProcessingFilter,它发挥了所有作用。
  3. Last 是使用 AnyRequestMatcher 匹配器的过滤器链。将匹配任何请求,并且该链中的重要过滤器是 UsernamePasswordAuthenticationFilter。这就是我认为的“用户工作流程”。

现在在使用 1.5.x 时,不知何故,上面的 #2 和 #3 被切换了。这就解释了为什么我的 Web 服务请求没有到达我的 Web 服务端点。 不明白为什么订单搞砸了(我的配置中没有使用任何@Order)。是时候研究一下@Order 我猜...

其他人遇到过这个问题吗?你是怎么解决的?

【问题讨论】:

    标签: spring-boot spring-oauth2


    【解决方案1】:

    果然,诀窍是将以下内容添加到我的 WebSecurityConfigurerAdapter 扩展中:

    @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
    

    在 SO here 上找到答案。

    【讨论】:

    • 附带说明,要迁移到 Spring Boot 2.0,我必须删除我在 1.4 中添加的 @Order...
    猜你喜欢
    • 1970-01-01
    • 2020-07-07
    • 2019-04-11
    • 2019-03-24
    • 2018-09-18
    • 1970-01-01
    • 2019-06-26
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多