1、背景
Spring Security OAuth(spring-security-oauth2)停更
主要意思是:生命周期停止告诉 Spring Security OAuth(spring-security-oauth2)项目已达到生命周期完毕,不再由VMware,Inc.活跃维护。 此项目已被Spring Security和Spring Authorization Server供给的OAuth2支撑所替代。
那么我们来分析一下这两个项目。Spring Authorization Server是Spring Security OAuth的进化版别,Spring Security OAuth官方现已宣告“End of Life”了。Spring Security OAuth运用的是OAuth2.0规范而Spring Authorization Serve引进了对OAuth 2.1和OpenID Connect 1.0规范的支撑,并供给了更多功用和改善。它供给了OAuth 2.1和OpenID Connect 1.0规范以及其他相关规范的完成。它是依据Spring Security构建的,为构建OpenID Connect 1.0身份供给者和OAuth2授权服务器产品供给了安全、轻量级和可定制的基础。
OAuth 2.1和OpenID Connect 1.0是用于身份验证和授权的行业规范协议。它们被广泛运用于各种运用程序和系统,以完成安全的用户身份验证和授权流程。Spring Authorization Server供给了一个便利的方法来完成这些协议,使开发人员能够快速构建安全可靠的身份验证和授权系统。
2、差异
2.1、协议差异
- Spring Security OAuth
Spring Security OAuth**(spring-security-oauth2)**是一个依据Spring Security的扩展,用于供给OAuth(敞开授权)协议的完成。它供给了OAuth 2.0的客户端和服务端支撑,使开发人员能够轻松地将OAuth集成到他们的运用程序中。
spring.io/projects/sp…
- Spring Authorization Server
Spring Authorization Server**(spring-authorization-server)**是一个框架,供给OAuth 2.1和OpenID Connect 1.0规范以及其他相关规范的完成。它构建在Spring Security之上,为构建OpenID Connect 1.0 Identity Providers和OAuth2 Authorization Server产品供给了一个安全,轻量级和可定制的基础。
[spring.io/projects/sp…
spring.io/projects/spring-authorization-server](link.zhihu.com/?target=htt…)
弥补知识点一:OAuth 2.0和OAuth 2.1差异
OAuth 2.0和OAuth 2.1是OAuth协议的两个不同版别,它们在以下方面有一些差异:
- 版别号:OAuth 2.0是最早发布的版别,而OAuth 2.1是OAuth 2.0的后续版别。
- RFC规范:OAuth 2.0的规范界说在RFC 6749中,而OAuth 2.1的规范界说在RFC 8628中。OAuth 2.1是对OAuth 2.0规范的细化和改善。
- 安全性增强:OAuth 2.1在安全性方面引进了一些增强功用,以强化协议的安全性。这些增强功用包括:禁止运用依据浏览器的运用程序进行授权码授权流程(Authorization Code Flow with Proof Key for Code Exchange, PKCE),引荐运用强暗码散列算法等。
- 快捷性:OAuth 2.1的目标之一是简化开发者对OAuth 2.0的完成和运用。它供给了更具可读性和易用性的规范,以减少完成和运用过程中的困惑和过错。
- 向后兼容性:OAuth 2.1被规划为向后兼容OAuth 2.0,这意味着现有的OAuth 2.0运用程序能够平滑地迁移到OAuth 2.1,而无需进行严重的更改。
需要留意的是,OAuth 2.1并非OAuth协议的完全新版别,而是在OAuth 2.0基础上的改善和细化。它旨在供给更好的安全性和快捷性,并解决了一些在OAuth 2.0中发现的问题。
在实践运用中,您应该依据具体需求和支撑情况选择OAuth的版别。对于新的项目,建议考虑运用OAuth 2.1,以取得更好的安全性和简化的开发体验。对于现有的OAuth 2.0运用程序,能够考虑逐步迁移到OAuth 2.1以运用其优势和增强功用。
弥补知识点二:OpenID Connect 1.0
OpenID Connect 1.0 是建立在 OAuth 2.0 协议之上的身份验证协议,它扩展了 OAuth 2.0 的功用,为客户端运用程序供给了更丰富的用户身份验证和特点信息获取才能。以下是 OpenID Connect 1.0 与 OAuth 2.0 的一些差异:
- 身份验证层:OAuth 2.0 主要重视授权方面,而 OpenID Connect 1.0 在 OAuth 2.0 的基础上添加了一个身份验证层,使得客户端运用程序能够直接获取用户的身份信息。
- ID Token:OpenID Connect 1.0 引进了 ID Token 的概念,它是一个依据 JSON Web Token (JWT) 的数据结构,用于传递有关用户身份的信息。ID Token 包括有关用户的根本配置信息,如用户标识符、姓名、电子邮件地址等。OAuth 2.0 不包括相似的规范化方法来传递用户身份信息。
- 用户信息端点:OpenID Connect 1.0 界说了一个用户信息端点,客户端运用程序能够运用该端点来获取用户的详细配置信息。OAuth 2.0 并没有界说相似的端点。
- 规范化:OpenID Connect 1.0 是一项规范化的协议,规范了身份验证和用户信息获取的流程和数据格式。它界说了一组规范和约好,使得不同的身份供给商和客户端运用程序能够在遵循相同的规范下进行集成。OAuth 2.0 尽管也是一个规范化协议,但它主要重视授权方面,没有像 OpenID Connect 1.0 那样具体界说身份验证和用户信息获取的流程。
综上所述,OpenID Connect 1.0 是在 OAuth 2.0 的基础上增加了身份验证层和用户信息获取功用的协议。它经过引进 ID Token 和用户信息端点等机制,为客户端运用程序供给了更丰富的用户身份验证和特点信息获取才能。
2.2、认证形式差异
- Spring Security OAuth
1)授权码形式:authorization_code
2)简化形式:implicit
3)客户端形式:client_credentials
4)暗码形式:password
- Spring Authorization Server
能够看到spring authorization server中password形式现已标记为过期了。另外多了jwt-bearer和device_code形式。
authorizationGrantTypes:客户端能够运用的授权颁发类型。支撑的值包括authorization_code、client_credentials、refresh_token和urn:ietf:params:oauth:grant-type:device_code。
暗码形式现已被标记为过期了,官方引荐运用 JWT-Bearer Token 或 Device Code Flow 形式。
JWT-Bearer Token 形式是一种依据 JSON Web Token(JWT)的认证方法,客户端向服务器发送一个包括用户身份信息的 JWT Token,服务器经过验证该 Token 来确认用户的身份。这种形式的长处是简略易用、安全性高、跨渠道性强。
Device Code Flow 形式则是一种依据移动设备的认证方法,客户端向服务器发送一个请求,要求获取一个一次性的拜访码(Device Code),并在移动设备上完成该码的输入以完成身份验证。这种形式的长处是安全性高、易于集成和运用。
如果您正在运用 Spring Security 并且需要更改认证方法,请考虑运用 JWT-Bearer Token 或 Device Code Flow 形式。
[github.com/spring-proj…
github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix](link.zhihu.com/?target=htt…)
========================================
如果文章对你有协助,请不要忘记加个重视、点个赞!必回关!!!