再见,Spring Security OAuth!!

简介: 本次将 《Spring Authorization Server》项目正式上线,去掉了之前的体验状态,此举恰逢 0.2.0 版本发布,这也是第一个正式支持的生产就绪版本。

官宣新品

最近,Spring 官方又推出了《Spring Authorization Server》项目:

image.png


本次将 《Spring Authorization Server》项目正式上线,去掉了之前的体验状态,此举恰逢 0.2.0 版本发布,这也是第一个正式支持的生产就绪版本。


项目前身

首先来看一则 2019 年 的 Spring Security OAuth 2.0 路线更新图说明:


Spring Security OAuth 2.0 Roadmap Update


https://spring.io/blog/2019/11/14/spring-security-oauth-2-0-roadmap-update


image.png

大概的意思是:


Spring Security 项目用来支持授权服务器不是一个合适的选择,因为授权服务器需要一个库来进行构建,而 Spring Security 作为一个框架,不适合用来参与构建库或产品,市面上又有大量商业和开源授权服务器可以选择,因此,Spring Security 团队决定不再提供对授权服务器的支持。。


另外,在 2018 年初,Spring 就宣布了 Spring Security OAuth 项目正式进入维护模式,并且计划在不久的将来会彻底停止支持。


我们进入 Spring Security OAuth 项目主页:


https://projects.spring.io/spring-security-oauth/docs/oauth2.html

image.png


可以看到弃用通知:


Spring Security OAuth 项目已经被弃用了,最新的 OAuth 2.0 支持由 Spring Security 项目提供,有关更多详细信息,请参阅 OAuth 2.0 迁移指南:


https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide

image.png


即使 Spring Security OAuth 项目被 Spring Security 项目接管了,但 Spring Security 依旧不再包含对授权服务器的支持,你可以用商用的、开源的,或者自己搭建,反正 Spring 不再提供了,纯粹的只做框架了。。


项目背景

Spring 弃用授权服务器之后,社区、博客上的反馈、Gitter 中的讨论和 GitHub 中的评论反响热烈,一致强烈要求 Spring 提供对授权服务器的支持,Spring 估计也是顶不住压力了,或者真的意识到 Spring 生态确实是需要授权服务器这玩意。。


于是在 2020/04/15 这天,Spring 团队又宣布新起《Spring Authorization Server》项目,以继续提供对 Spring 授权服务器的支持。


https://spring.io/blog/2020/04/15/announcing-the-spring-authorization-server

image.png


这是由 Spring Security 团队领导的社区驱动项目,专注于为 Spring 社区提供授权服务器支持,该项目也开始替换了 Spring Security OAuth 提供的对于 Authorization Server 的支持。


完整功能列表:


The OAuth 2.0 Authorization Framework


Authorization Code Grant


HTTP Basic


HTTP POST


Authorization Code


Client Credentials


Refresh Token


Authorization Grant


Client Authentication


User Consent


Proof Key for Code Exchange by OAuth Public Clients (PKCE)


OAuth 2.0 Token Revocation


OAuth 2.0 Token Introspection


OAuth 2.0 Authorization Server Metadata


JSON Web Token (JWT)


JSON Web Signature (JWS)


JSON Web Key (JWK)


OpenID Connect Core 1.0


Authorization Code Flow


OpenID Connect Discovery 1.0


Provider Configuration Endpoint


OpenID Connect Dynamic Client Registration 1.0


Client Registration Endpoint


即将到来的功能:


JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants


OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens


OpenID Connect Core 1.0


UserInfo Endpoint


OAuth 2.0 Token Exchange


这部分这里就不展开介绍了,后续栈长有时间会进行详细的理论+实战,关注公众号Java技术栈,第一时间推送。


为什么需要授权服务器?

这个你需要了解下 OAuth2.0 协议,它定义了四个角色:


Client:客户端,即请求授权用户资源的第三方应用程序;


Resource Owner:资源所有者,授权 Client 访问其帐户的用户;


Authorization server: 授权服务器,即服务商用于处理用户授权认证的服务器;


Resource server:资源服务器,即服务商提供用户受保护资源的服务器;


另外,OAuth2.0 支持四种运行模式:


授权码模式


隐式授权模式


密码模式


客户端模式


但一般我们使用较多的还是授权码模式。


授权码模式运行流程如下:


image.png

流程说明:


1、客户端请求用户给予授权;


2、用户同意给予客户端授权,并返回授权码;


3、客户端通过授权码再向认证服务器申请令牌;


4、认证服务器对客户端进行认证并返回令牌;


5、客户端使用令牌向资源服务器获取资源;


6、资源服务器验证令牌,并返回资源;


如流程所示,OAuth2 授权码模式的运行流程就少不了 Authorization Server(授权服务器),授权服务器用于授权认证,以及对 Access Token(令牌)的发放、管理、吊销等。


授权服务器可以和资源服务器在不同的服务器,也可以是同一台服务器。


总结

Spring 官方在 2020/04 才宣布搞《Spring Authorization Server》这个项目,才一年多时间就可以上线使用了,效率杠杠的啊,团队的目标也很明确,就是要使《Spring Authorization Server》项目最终成为 Java 平台上 OAuth 2 Authorization Server 事实上的标准框架。


好了,今天的分享就到这了,后面栈长还会陆续解读更多的 Java 主流技术,关注公众号Java技术栈第一时间推送。另外,我也将 Spring 系列主流面试题和参考答案都整理好了,关注公众号Java技术栈回复关键字 "面试" 进行刷题。


最后,觉得我的文章对你用收获的话,动动小手,给个在看、转发,原创不易,栈长需要你的鼓励。

相关文章
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
2055 5
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
安全 Java 数据库
实现基于Spring Security的权限管理系统
实现基于Spring Security的权限管理系统
|
安全 Java 数据安全/隐私保护
解析Spring Security中的权限控制策略
解析Spring Security中的权限控制策略
|
JSON 安全 Java
Spring Security 6.x 微信公众平台OAuth2授权实战
上一篇介绍了OAuth2协议的基本原理,以及Spring Security框架中自带的OAuth2客户端GitHub的实现细节,本篇以微信公众号网页授权登录为目的,介绍如何在原框架基础上定制开发OAuth2客户端。
803 4
Spring Security 6.x 微信公众平台OAuth2授权实战
|
安全 Java 数据安全/隐私保护
Spring Security 6.x 一文快速搞懂配置原理
本文主要对整个Spring Security配置过程做一定的剖析,希望可以对学习Spring Sercurity框架的同学所有帮助。
950 5
Spring Security 6.x 一文快速搞懂配置原理
|
存储 安全 Java
Spring Security 6.x OAuth2登录认证源码分析
上一篇介绍了Spring Security框架中身份认证的架构设计,本篇就OAuth2客户端登录认证的实现源码做一些分析。
1082 2
Spring Security 6.x OAuth2登录认证源码分析
|
安全 Java API
Spring Security 6.x 图解身份认证的架构设计
【6月更文挑战第1天】本文主要介绍了Spring Security在身份认证方面的架构设计,以及主要业务流程,及核心代码的实现
411 1
Spring Security 6.x 图解身份认证的架构设计
|
安全 前端开发 Java
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
上一篇主要介绍了Spring Secuirty中的过滤器链SecurityFilterChain是如何配置的,那么在配置完成之后,SecurityFilterChain是如何在应用程序中调用各个Filter,从而起到安全防护的作用,本文主要围绕SecurityFilterChain的工作原理做详细的介绍。
1388 0
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制

热门文章

最新文章