很快啊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 {
@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
推荐阅读
- 分布式|面试官(ZooKeeper分布式锁实现,你了解了吗())
- java|面试官: 说说看, 什么是 Hook (钩子) 线程以及应用场景?
- java|面试官(ZK(ZooKeeper)分布式锁实现,你了解了吗())
- Java|面试官问(说说你对ZooKeeper集群与Leader选举的理解())
- 字符串|深入正则表达式(3):正则表达式工作引擎流程分析与原理释义
- 与君共勉|【数据结构与算法】最小生成树与最短路径问题
- java|对数器验证算法正确性----bug寻找,文章中含有测试源码
- 区块链|教程丨三分钟教你制作专属NFT智能合约
- java|访问Github速度很慢以及解决方法(系统通用)