Spring Security OAuth停更了?探索官方进化版Spring Authorization Server的革新之处!

news2025/2/25 0:35:41

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集成到他们的应用程序中。

https://spring.io/projects/spring-security-oauth

  • 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产品提供了一个安全,轻量级和可定制的基础。

https://spring.io/projects/spring-authorization-server​spring.io/projects/spring-authorization-server

补充知识点一:OAuth 2.0和OAuth 2.1区别

OAuth 2.0和OAuth 2.1是OAuth协议的两个不同版本,它们在以下方面有一些区别:

  1. 版本号:OAuth 2.0是最早发布的版本,而OAuth 2.1是OAuth 2.0的后续版本。
  2. RFC规范:OAuth 2.0的规范定义在RFC 6749中,而OAuth 2.1的规范定义在RFC 8628中。OAuth 2.1是对OAuth 2.0规范的细化和改进。
  3. 安全性增强:OAuth 2.1在安全性方面引入了一些增强功能,以强化协议的安全性。这些增强功能包括:禁止使用基于浏览器的应用程序进行授权码授权流程(Authorization Code Flow with Proof Key for Code Exchange, PKCE),推荐使用强密码散列算法等。
  4. 便捷性:OAuth 2.1的目标之一是简化开发者对OAuth 2.0的实现和使用。它提供了更具可读性和易用性的规范,以减少实现和使用过程中的困惑和错误。
  5. 向后兼容性: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 的一些区别:

  1. 身份验证层:OAuth 2.0 主要关注授权方面,而 OpenID Connect 1.0 在 OAuth 2.0 的基础上添加了一个身份验证层,使得客户端应用程序可以直接获取用户的身份信息。
  2. ID Token:OpenID Connect 1.0 引入了 ID Token 的概念,它是一个基于 JSON Web Token (JWT) 的数据结构,用于传递有关用户身份的信息。ID Token 包含有关用户的基本配置信息,如用户标识符、姓名、电子邮件地址等。OAuth 2.0 不包含类似的标准化方式来传递用户身份信息。
  3. 用户信息端点:OpenID Connect 1.0 定义了一个用户信息端点,客户端应用程序可以使用该端点来获取用户的详细配置信息。OAuth 2.0 并没有定义类似的端点。
  4. 标准化: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 模式。

https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix​github.com/spring-projects/spring-security/wiki/OAuth-2.0-Features-Matrix

========================================

如果文章对你有帮助,请不要忘记加个关注、点个赞!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信创办公–基于WPS的EXCEL最佳实践系列 (设置多级列表)

信创办公–基于WPS的EXCEL最佳实践系列 (设置多级列表) 目录 应用背景操作步骤1、删除重复项2、部门绑定3、填入相关信息 应用背景 当我们在使用电子表格时,很多类型重复输入很麻烦,看起来也很复杂,我们就可以设置多级…

关于输入输出格式符的测试

对输出%m.nf的测试 m代表宽度,表示数据可以占m列n代表精确,表示小数占n列 以下用%6.3f进行测试,有两个问题: 1、这个m是包括小数点位数吗?(todo未果) 2、精确度n超过了是怎么处理的&#xff1f…

2023年第六届广西大学生程序设计竞赛(正式赛)题解

比赛题目链接,可以继续提交代码: 2023年第六届广西大学生程序设计竞赛(正式赛) | 知乎:如何评价第六届广西大学生程序设计竞赛? 难度题号备注签到题A J K已给出题解和代码普通题B D E H已给出题解和代码中等题C G–难题F I L M–…

机器学习方法在生态经济学领域中的应用

查看原文>>>基于R语言机器学习方法在生态经济学领域中的实践技术 近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一&#xff0c…

moviepy快速切分视频并保存片段

文章目录 1、直接使用ffmepg2、使用moviepy本身 moviepy安装最新版本: pip install moviepy --pre --upgrade版本是v2.0.0.dev2。 有两种方法一种快速的: 1、直接使用ffmepg from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip ffmpeg…

Lecture 12 Discourse

目录 Discourse 语篇三个关键的语篇任务Discourse Segmentation 语篇分段Unsupervised Approaches 无监督方法Supervised Approaches 有监督方法有监督语篇分段器Discourse Analysis 语篇解析语篇解析RST: Discourse UnitsRST: Discourse RelationsNucleus vs. Satellite 核心 …

2022计算机系统期末

直接导入无图片,先不改了,不过图片都是原题目,不影响对答案。 计算机系统2022期末 本课程的复习请以知识点复习为重,全部内容共有大小280个知识点,都可能在期末考试出现,仅通过往年试卷复习是远远不够的&…

从小白到大神之路之学习运维第35天---第三阶段---mysql数据库之主从复制配置

第三阶段基础 时 间:2023年6月7日 参加人:全班人员 内 容: Mysql数据库之主从复制配置 目录 前提环境配置 MySQL 5.7 版本的主从复制配置步骤 主 库 1. 在主库上开启二进制日志记录功能 2. 在主库上创建一个用于从库访问的备份用户 3. 在主…

VTK学习之光照和相机

目录 一、VTK光照 1、关于vtkLight常用的方法 2、最终效果 二、相机设置 1、相机设置 2、效果 一、VTK光照 通过设置光照,可以达到不同颜色的目的,参考博客: VTK修炼之道7_三维场景基本要素:光照_vtk 光照_沈子恒的博客-CSDN博客 1…

吴恩达 ChatGPT Prompt Engineering for Developers 系列课程笔记--02 Guidelines

02 Guidelines 本节将配合代码,介绍一些构建Prompt的基本原则和策略。 1) OpenAI API 首先开发者需要在OpenAI网站(https://platform.openai.com/account/api-keys)注册一个key,然后通过pip install openai安装openai三方库,再将key导入当…

Express路由

一、目标 能够使用express.static()快速托管静态资源能够使用express路由精简项目结构能够使用常见的express中间件能够使用express创建API接口能够在express中启用cors跨域资源共享 二、目录 初始ExpressExpress路由Express中间件使用Express写接口 1.1Express简介 1.什么…

微信小程序原生开发功能合集二十:导航栏、tabbar自定义及分包功能介绍

本章实现导航栏及tabbar的自定义处理的相关方法介绍及效果展示。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如下:    1. CSDN课程: https://edu.csdn.net/course/detail/37977    2. 5…

uCOSii系统的中断管理

uCOSii系统的中断管理 1、在使用uCOSii系统时,中断服务程序需要调用两个函数OSIntEnter()和OSIntExit()。 OSIntEnter() 进入中断时,用OSIntNesting来统计中断嵌套次数,告知uCOSii系统,当前中断服务程序正在执行; OS…

Java实战和面试宝典

这是一篇记录工作和学习过程中遇到的一些问题的文章,每个问题都很有代表性,值得不断回顾和深入思考的,答案未必十分准确,但可以作为一种参考,共勉! 读了这篇不一样的八股文,你将至少拥有三年经…

社交媒体品牌:如何通过11个步骤提升您的战略

您是否正在努力在社交媒体上留下自己的印记?您是否觉得您的品牌在无尽的视频和表情包中迷失了方向?在本文中,我们将为您提供11个技巧,帮助您制定社交媒体品牌战略并脱颖而出。但首先,让我们探讨什么是社交媒体品牌&…

正版软件 | DaisyDisk:Mac 电脑一流的磁盘空间管理工具

使用 Mac 工作时,平时创建并下载大量文件,但很容易忘记或者很少删除这些内容。但是有一天,您发现启动磁盘已红,但是自己又好似没有安装啥软件,这时候就会想到底是哪些数据占用了这么大的空间?! …

【TA 100】2.3 HLSL常用函数介绍

一、基本数学运算 ● max(a,b) ○ 返回较大的 ● min(a,b) ○ 返回较小的 ● mul(a,b) ○ 两向量相乘,常用于矩阵运算 ● abs(a) ○ …

ThreeJS教程:地图案例(包围盒、正投影)

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 地图案例(包围盒、正投影) 地图案例(包围盒、正投影) 地图案例会涉及到几何体、包围盒、正投影相机三方面知识点。 平面填充几何体ShapeGeometry包围盒Box3正投影相机Orthograph…

MTK开发板-4G/5G联发科开发板相关方案定制

开发板是用于嵌入式系统开发的电路板,包括中央处理器、存储器、输入设备、输出设备、数据通路 / 总线和外部资源接口等一系列硬件组件。一般来说,开发板由嵌入式系统开发者根据开发需求自主定制,也可以由用户自己研究设计。开发板不仅是初学者…

进阶篇丨链路追踪(Tracing)很简单:链路成本指南

广义上的链路成本,既包含使用链路追踪产生的数据生成、采集、计算、存储、查询等额外资源开销,也包含链路系统接入、变更、维护、协作等人力运维成本。为了便于理解,本小节将聚焦在狭义上的链路追踪机器资源成本,人力成本将在下一…