共计 2184 个字符,预计需要花费 6 分钟才能阅读完成。
很快啊 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 获取更多资讯
集体博客:https://felord.cn