Spring Authorization Server 0.2.3发布,放出联合身份DEMO
很快啊Spring Authorization Server又发新版本了,现在的版本是0.2.3。本次都有什么改动呢?我们来了解一下。
0.2.3版本特性
本次更新的新特性不少。
为公开客户端提供默认的设置
根据RFC6479,包含授权码(authorization_code
)授权并且客户端认证方式ClientAuthenticationMethod
只有一种,为none
的客户端都是公开(Public)客户端,反之就是机密(Confidential)客户端。
在0.2.3中,为公开的客户端提供了客户端默认配置ClientSettings
。
if (this.clientSettings == null) {
ClientSettings.Builder builder = ClientSettings.builder();
if (isPublicClientType()) {
// @formatter:off
builder
.requireProofKey(true)
.requireAuthorizationConsent(true);
// @formatter:on
}
this.clientSettings = builder.build();
}
这里多说点,公开客户端现在不单纯是authorization_code
模式授权,必须加上PKCE。
OAuth2ClientAuthenticationProvider被细分
Spring Authorization Server目前支持的客户端认证方式有:
client_secret_basic
client_secret_post
client_secret_jwt
private_key_jwt
none
之前由OAuth2ClientAuthenticationProvider
一手包办,现在职责分离了。
JwtClientAssertionAuthenticationProvider
负责private_key_jwt
和client_secret_jwt
,具体细节请关注我的专栏。
目前胖哥已经实现了完整的private_key_jwt
认证的DEMO。
ClientSecretAuthenticationProvider
默认的client_secret_basic
和client_secret_post
由它负责。
PublicClientAuthenticationProvider
处理上面所说的公开客户端的认证方式。
InMemoryOAuth2AuthorizationService优化
主要优化了对未完成授权信息OAuth2Authorization
存储的淘汰策略,如果内存中存储的数量超过100
,会把最老存储的信息淘汰掉。
增加了联合身份的DEMO
Federated Identity Pattern (联合身份模式)举个例子,你同时对接了好几个身份提供商(IDP),你都需要跳不同的授权服务器页面并输入对应的密码,现在这些IDP可以都放在Spring Authorization Server下面,委托给Spring Authorization Server来处理身份认证授权。这样你不用跳来跳去了,只需要维护Spring Authorization Server中IDP的关系了。
请注意该功能不是Spring Authorization Server本身自带的功能。
OAuth2TokenGenerator
0.2.3抽象了OAuth2Token
的的生成模型:
@FunctionalInterface
public interface OAuth2TokenGenerator<T extends OAuth2Token> {
@Nullable
T generate(OAuth2TokenContext context);
}
OAuth2授权码使用统一的Token生成模型
授权码授权中的code
的生成现在也需要由OAuth2TokenGenerator
实现,实现类为OAuth2AuthorizationCodeGenerator
。
OAuth2刷新Token使用统一的Token生成模型
OAuth2刷新令牌 OAuth2RefreshToken
现在同样需要由OAuth2TokenGenerator
实现。
JWT的生成使用统一的模型
现在JWT的生成也由OAuth2TokenGenerator
来实现,具体的实现类为JwtGenerator
。
支持不透明令牌
现在你可以自定义一个OAuth2TokenGenerator
并注入到Spring IoC来实现自定义的令牌生成逻辑,这意味着不透明令牌也可以通过自定义来实现。
令牌自省过滤器配置现在可以自定义
0.2.3版本之前令牌自省的配置由OAuth2AuthorizationServerConfigurer
负责,现在它由独立的配置类OAuth2TokenIntrospectionEndpointConfigurer
负责。
依赖升级
0.2.3也对部分的依赖进行了升级,具体为:
- 更新到Reactor 2020.0.16
- 更新到Spring Security 5.5.5
- 更新到Spring Framework 5.3.16
- 更新到Spring Boot 2.5.10
胖哥也将跟进变化,对依赖进行逐步升级。
关注公众号:Felordcn 获取更多资讯
Spring Authorization Server 0.2.3发布,放出联合身份DEMO的更多相关文章
- Spring Authorization Server 0.3.0 发布,官方文档正式上线
基于OAuth2.1的授权服务器Spring Authorization Server 0.3.0今天正式发布,在本次更新中有几大亮点. 文档正式上线 Spring Authorization Ser ...
- Spring Authorization Server(AS)从 Mysql 中读取客户端、用户
Spring AS 持久化 jdk version: 17 spring boot version: 2.7.0 spring authorization server:0.3.0 mysql ver ...
- Spring Authorization Server授权服务器入门
11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OA ...
- Spring Authorization Server 全新授权服务器整合使用
前言 Spring Authorization Server 是 Spring 团队最新开发适配 OAuth 协议的授权服务器项目,旨在替代原有的 Spring Security OAuth 经过半年 ...
- Spring Authorization Server的使用
Spring Authorization Server的使用 一.背景 二.前置知识 三.需求 四.核心代码编写 1.引入授权服务器依赖 2.创建授权服务器用户 3.创建授权服务器和客户端 五.测试 ...
- Spring Authorization Server 实现授权中心
Spring Authorization Server 实现授权中心 源码地址 当前,Spring Security 对 OAuth 2.0 框架提供了全面的支持.Spring Authorizati ...
- spring boot 2.0(一)权威发布spring boot2.0
Spring Boot2.0.0.RELEASE正式发布,在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误,然后Spring ...
- Payment Spring Boot 1.0.4.RELEASE 发布,最易用的微信支付 V3 实现
Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库.配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付. 欢迎ISSUE,欢迎 ...
- sql server 变量和select 赋值的联合使用demo
) ) select @cltcode=cltcode,@brand=brand from prosamplehd CREATE table #t ( cltcode ), brand ) ) INS ...
随机推荐
- JUC并发工具类之Semaphore控制并发线程数
首先看看关于Semaphore的UML图: 从上图看,信号量的实现原理与锁类似,是基于AQS的:有公平与非公平之分.当初始的资源数为1时就退化为排它锁了,资源总数即state的初始值,在acquire ...
- Linux命令行模式下安装VMware Tools详细步骤
在Linux命令行模式安装VMware Tools 方法/步骤1: 首先启动CentOS 7,在VMware中点击上方"VM",点击"Install VMware Too ...
- Springboot整合kaptcha验证码
01.通过配置类来配置kaptcha 01-01.添加kaptcha的依赖: <!-- kaptcha验证码 --> <dependency> <groupId>c ...
- 给博客加入链接安全跳转页(添加一个和CSDN一样的链接跳转页)
本文首发于青云工作室 原文链接为 https://qystudio.ltd/posts/25250.html 前言 或是出于优化 SEO,或是出于加强网站体验,很多博客都给文章中的外部链接加上了个二次 ...
- 在vs2022环境中用C#创建COM组件
规则 com组件以接口的方式对外开放. 1:所要导出的类必须为公有: 2:所有属性.方法也必须为公有: 3:要导出的属性.方法必须用接口方式: interface IName { [DispId(1) ...
- 【C# IO 操作 】详解去掉字符顺序标记(BOM)头的方法
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM).它是一串隐藏的字符,用于让记事本等编辑器识别 ...
- C#委托Action、Action<T>、Func<T>、Predicate<T>系统自带的委托
C#委托Action.Action<T>.Func<T>.Predicate<T> CLR环境中给我们内置了几个常用委托Action. Action<T& ...
- javascript中逻辑运算符&&和||的返回值问题
今天在做逻辑运算符的时候遇到一个小问题一直转不过弯来,var a=(undefined&&123)||(3||5)的返回值是什么? 首先是||的返回值问题: ||的返回值会返回最早遇到 ...
- linux 测试机器端口连通性方法
转至:https://blog.csdn.net/z1134145881/article/details/54706711 几种常用方法 下面一一介绍: 1 telnet方法 2 wget方法 3 s ...
- Python3对接华三CAS平台Api获取虚拟机监控信息-渐入佳境
--时间:2021年2月3日 --作者:飞翔的小胖猪 说明 使用python对接华三CAS虚拟化平台,通过厂商提供的api接口获取每个集群下所有虚拟机的监控信息,并保存数据在本地的mariadb数据库 ...