很快啊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

最新文章

  1. 现代3D图形编程学习-环境设置
  2. 共有31款PHP 图形/图像处理开源软件(转)
  3. Spring的入门的程序
  4. 第一周:设计一个简易ATM取款机简易程序(2)
  5. Android 获取控件相对于屏幕位置
  6. hdoj 1856 More is better【求树的节点数】
  7. pthread_t结构的定义
  8. freemarker序列的拆分
  9. kgdb调试注意事项
  10. bootstrap禁用点击空白处关闭模态框
  11. Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit
  12. 201521123068《Java程序设计》第5周学习总结
  13. Day19 Django
  14. Attention Model(注意力模型)思想初探
  15. idea在springboot项目中没有【新建JSP选项】的解决方法
  16. swig模板引擎汇总
  17. 什么是node
  18. 集合框架四(Map)
  19. 使用@selector模仿代理功能降低代码耦合度
  20. vue-router.esm.js?fe87:16 [vue-router] Route with name &#39;page&#39; does not exist

热门文章

  1. Solution -「LOCAL」解析电车
  2. Back to Basics: RAII and The Rule of Zero
  3. 一、Mybatis初体验
  4. Vue 源码解读(2)—— Vue 初始化过程
  5. 忘掉cmd.exe吧!选用优雅的控制台终端(ConsoleZ)
  6. 数据平滑处理-均值|中值|Savitzky-Golay滤波器
  7. nodejs调用jar
  8. JavaScript与C#互通的DES加解密算法的实现(转)
  9. python hex转flaot
  10. JZ-008-跳台阶