很快啊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的的生成模型:

@FunctionalInterfacepublic 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