AuthorizationServerConfigurerAdapter 已弃用

Posted

技术标签:

【中文标题】AuthorizationServerConfigurerAdapter 已弃用【英文标题】:AuthorizationServerConfigurerAdapter is deprecated 【发布时间】:2020-04-04 09:49:50 【问题描述】:

我想在 spring rest API 中使用Oauth2 身份验证进行登录。但我收到了一些警告,例如 AuthorizationServerConfigurerAdapter is deprecated,请参阅 Spring Security 5 的 OAuth 2.0 Migration Guide。

我在那里查看过,但没有找到太多的迁移指南。任何人都可以分享这个完整的例子。

提前谢谢...

【问题讨论】:

我发现了同样的问题,试图找到如何通过 Spring Security 使用 OAuth 2 实现身份验证和授权的最佳方法。可能我缺少有关 OAuth 的更深入的知识,但希望通过学习找出问题。 我试图将 spring-security-oauth2 的版本从 2.4.0.RELEASE 降级到 2.3.8.RELEASE 并且看起来它被标记为从 2.4 弃用.0.释放。两个版本都来自 11 月 -> maven repository 。我只会猜测授权服务器的迁移指南是否仍在进行中。 【参考方案1】:

Spring Security OAuth2 项目目前已被弃用,Spring Security 团队有decided 不再提供对授权服务器的支持。他们将重新考虑这个决定,但目前还没有任何消息,我建议您考虑其他解决方案,例如,Keycloak。

15/04/2020:新的Spring Authorization Server 是announced。

这是一个由 Spring Security 团队领导的社区驱动项目, 专注于为 Spring 提供 Authorization Server 支持 社区。​​p>

2020 年 7 月 5 日: Spring Security OAuth 的生命周期已终止 clarified。

为此,我们计划为 2.4.x 和 2.5.x 线直到 2021 年 5 月。此外,2.5.x 线将支持安全修复程序,直到 2022 年 5 月,届时 项目将达到生命周期的终点。相同的生命周期结束 适用于 Spring Boot 2 自动配置项目。

【讨论】:

这是为什么 AuthorizationServerConfigurerAdapter 被贬低的正确答案。让我们希望 Spring 会重新考虑... 你有任何教程或资源来帮助从旧的 Spring-Security-OAuth2 迁移到作为 Keycloak、Gluu 的开源授权服务器吗? 我也很感兴趣可以用于最新的 Spring Security。请分享! @Geany 我写并发表了一篇描述其中一个迁移选项的帖子:sultanov.dev/blog/… @PeterPenzov Keycloak 以及任何其他授权服务器都可以与最新的 Spring Security 一起使用:baeldung.com/spring-boot-keycloak【参考方案2】:

要在 Spring Boot 应用程序中使用 AuthorizationServer(以及 AuthorizationServerConfigurerAdapter),您可以使用Spring Security OAuth Boot 2 Autoconfig。尽管它处于维护模式,但它一直在积极更新(截至 2020 年 1 月),它的新版本是 2.2.3,对应于 Spring Boot 版本 2.2.3。它的reference guide 说:

请注意,您需要为 spring-security-oauth2-autoconfigure 指定版本,因为它不再由 Spring Boot 管理,尽管它应该与 Boot 的版本匹配

我在我的演示项目中使用了它,一切看起来都很好。因此,要使用 OAuth2、JWT 令牌、授权和资源服务器,您只需将其添加到您的项目中:

    <dependency>
        <groupId>org.springframework.security.oauth.boot</groupId>
        <artifactId>spring-security-oauth2-autoconfigure</artifactId>
        <version>2.2.3.RELEASE</version>
    </dependency>

My demo project.

更新

从 2.3.0 版开始,Spring Security OAuth Boot 2 Autoconfig(内部有 spring-security-oauth2:2.4.1)也被弃用了。

但根据 Spring 博客中的End-of-Life for Spring Security OAuth 帖子:

...计划在 2021 年 5 月之前为 2.4.x 和 2.5.x [spring-security-oauth2] 行提供补丁和安全修复。此外,在 2022 年 5 月之前,2.5.x 系列将支持安全修复程序,届时该项目将结束生命周期。 同样的生命周期结束时间表适用于 Spring Boot 2 auto-configuration 项目。

还有一个新的Spring Authorization Server 项目是announced。

这是一个由 Spring Security 团队领导的社区驱动项目,专注于为 Spring 社区提供 Authorization Server 支持。


在Spring Security OAuth 2.0 Roadmap Update 中,他们建议使用Keycloak 作为授权服务器的开源实现。所以我认为以下链接会有所帮助:

A Quick Guide to Using Keycloak with Spring Boot Keycloak Embedded in a Spring Boot Application

【讨论】:

您不应建议人们使用当前已弃用的项目。 我不建议使用已弃用的项目。 spring-security-oauth2-autoconfigure 还没有被弃用,我警告说它处于维护模式。问题是关于使用 AuthorizationServer 的可能性 - 我证明了这种可能性。

以上是关于AuthorizationServerConfigurerAdapter 已弃用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot OAuth2:从 cookie 中提取 JWT 进行身份验证