关于java:Spring-Authorization-Server-023发布放出联合身份DEMO

45次阅读

共计 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_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

正文完
 0