升级后的 Spring Boot Oauth2 自动配置周期

Posted

技术标签:

【中文标题】升级后的 Spring Boot Oauth2 自动配置周期【英文标题】:Spring Boot Oauth2 autoconfigure cycle after upgrade 【发布时间】:2022-01-10 12:02:31 【问题描述】:

我正在将我的应用程序从 Spring Boot 2.5.4 升级到 2.6.1 并遇到依赖问题:

**说明: 应用上下文中一些bean的依赖形成了一个循环:

oidcAuthService 定义在文件 [/pr/pr-security-oidc/target/classes/com/pr/MyOauth2AuthService.class]

┌─────┐ | oauth2SecurityConfiguration ↑ ↓ | org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration ↑ ↓ | org.springframework.security.config.annotation.web.configuration.OAuth2ClientConfiguration$OAuth2ClientWebMvcSecurityConfiguration └──────┘**

经过一些调查,排除 WebMvcAutoConfiguration.class 后,应用程序能够启动,但会导致不同的安全配置相关问题。 任何想法新的 Spring 版本发生了什么,为什么 WebMvcAutoConfiguration 和 OAuth2ClientConfiguration 相互冲突?

附:我正在使用 spring-boot-starter-oauth2-client 和 spring boot,在旧版本上没有问题。

谢谢!

【问题讨论】:

这是因为 spring 2.6 是第一个检查循环依赖并出错的版本 【参考方案1】:

你可以尝试放置

spring.main.allow-circular-references: true

在您的 application.properties 中。更多请点击链接: https://github.com/springdoc/springdoc-openapi/issues/1347

【讨论】:

应该注意这只是一种解决方法。这是 spring security oauth2 的一个已知问题吗?

以上是关于升级后的 Spring Boot Oauth2 自动配置周期的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot OAuth2 自定义登录表单用例

如何使用spring-boot 1.3.0.RC1为oauth2提供自定义安全性配置

Spring Boot Security OAuth2 自定义异常消息

如何从 facebook/google/... oauth2 身份验证在 Spring (Boot) 中为单页应用程序派生自定义登录令牌?

具有基本身份验证和自定义 UserDetailsS​​ervice 的 Spring Boot OAuth2

资源服务器上的 Spring Boot OAuth2 自定义角色