很快啊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_jwtclient_secret_jwt,具体细节请关注我的专栏

目前胖哥已经实现了完整的private_key_jwt认证的DEMO

ClientSecretAuthenticationProvider

默认的client_secret_basicclient_secret_post由它负责。

PublicClientAuthenticationProvider

处理上面所说的公开客户端的认证方式。

InMemoryOAuth2AuthorizationService优化

主要优化了对未完成授权信息OAuth2Authorization存储的淘汰策略,如果内存中存储的数量超过100,会把最老存储的信息淘汰掉。

增加了联合身份的DEMO

Federated Identity Pattern (联合身份模式)举个例子,你同时对接了好几个身份提供商(IDP),你都需要跳不同的授权服务器页面并输入对应的密码,现在这些IDP可以都放在Spring Authorization Server下面,委托给Spring Authorization Server来处理身份认证授权。这样你不用跳来跳去了,只需要维护Spring Authorization ServerIDP的关系了。

请注意该功能不是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 获取更多资讯

个人博客:https://felord.cn

Spring Authorization Server 0.2.3发布,放出联合身份DEMO的更多相关文章

  1. Spring Authorization Server 0.3.0 发布,官方文档正式上线

    基于OAuth2.1的授权服务器Spring Authorization Server 0.3.0今天正式发布,在本次更新中有几大亮点. 文档正式上线 Spring Authorization Ser ...

  2. Spring Authorization Server(AS)从 Mysql 中读取客户端、用户

    Spring AS 持久化 jdk version: 17 spring boot version: 2.7.0 spring authorization server:0.3.0 mysql ver ...

  3. Spring Authorization Server授权服务器入门

    11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OA ...

  4. Spring Authorization Server 全新授权服务器整合使用

    前言 Spring Authorization Server 是 Spring 团队最新开发适配 OAuth 协议的授权服务器项目,旨在替代原有的 Spring Security OAuth 经过半年 ...

  5. Spring Authorization Server的使用

    Spring Authorization Server的使用 一.背景 二.前置知识 三.需求 四.核心代码编写 1.引入授权服务器依赖 2.创建授权服务器用户 3.创建授权服务器和客户端 五.测试 ...

  6. Spring Authorization Server 实现授权中心

    Spring Authorization Server 实现授权中心 源码地址 当前,Spring Security 对 OAuth 2.0 框架提供了全面的支持.Spring Authorizati ...

  7. spring boot 2.0(一)权威发布spring boot2.0

    Spring Boot2.0.0.RELEASE正式发布,在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误,然后Spring ...

  8. Payment Spring Boot 1.0.4.RELEASE 发布,最易用的微信支付 V3 实现

    Payment Spring Boot 是微信支付V3的Java实现,仅仅依赖Spring内置的一些类库.配置简单方便,可以让开发者快速为Spring Boot应用接入微信支付. 欢迎ISSUE,欢迎 ...

  9. sql server 变量和select 赋值的联合使用demo

    ) ) select @cltcode=cltcode,@brand=brand from prosamplehd CREATE table #t ( cltcode ), brand ) ) INS ...

随机推荐

  1. Solution -「国家集训队」「洛谷 P4451」整数的 lqp 拆分

    \(\mathcal{Description}\)   Link.   求 \[\sum_{m>0\\a_{1..m}>0\\a_1+\cdots+a_m=n}\prod_{i=1}^mf ...

  2. [c语言]运算符的优先级与结合性

    c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别.本文举几个简单的例子说明,这些运算符也特别常用. 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序:而 ...

  3. windev的Trigger触发器,能秒SQL吗?

    有朋友问,"你是不是在写论文?" (此处请想象个表情)"好吧,论文继续!" SQL中,触发器可以看成是一种特殊的存储过程,使用inserted临时表来建立数据关 ...

  4. Winform实现客户端的自动更新

              话不多说,直接上干货.当然也希望各位前辈多多指导. 自动更新客户端的设计原理图 请花两分钟时间,仔细阅读下面这张图,明白客户端自动升级的原理.        自动更新的效果图 1. ...

  5. 2020ICPC济南站 J.Tree Constructer

    题目大意:给定一棵N个顶点的树,顶点为1~N,对于一个序列A1,A2,-,An,若Ai | Aj == 2^60-1,则会连一条边(i,j).要求求出一个序列,可以唯一确定所给定的树. 思路:考虑到树 ...

  6. 哈工大 信息安全实验 XSS跨站脚本攻击原理与实践

    XX大学XX学院 <网络攻击与防御> 实验报告 实验报告撰写要求 实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性. ...

  7. random_sample() takes at most 1 positional argument (2 given)

    是random模块下的sample函数,而不是np.random.

  8. k8s 中 nfs作为存储的三种方式

    1.安装nfs服务.直接给命令 yum install nfs-utils vim /etc/exports /data/k8s/ 172.16.1.0/24(sync,rw,no_root_squa ...

  9. LeetCode-029-两数相除

    两数相除 题目描述:给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的 ...

  10. 【Apollo自动驾驶源码解读】车道线的感知和高精地图融合

    模式选择 在modules/map/relative_map/conf/relative_map_config.pb.txt文件中对模式进行修改: lane_source: OFFLINE_GENER ...