发布在即!SpringAuthorizationServer发布了新版本,当前版本为0.2.3。这次有什么变化?让我们找出来。版本0.2.3功能本次更新有许多新功能。为公共客户端提供默认设置。根据RFC6479,包含授权码(authorization_code),客户端认证方式只有一种ClientAuthenticationMethod。没有的客户就是公共(Public)客户,否则就是机密(Confidential)客户。在0.2.3中,为公共客户端提供了客户端默认配置ClientSettings。if(this.clientSettings==null){ClientSettings.Builderbuilder=ClientSettings.builder();if(isPublicClientType()){//@formatter:offbuilder.requireProofKey(true).requireAuthorizationConsent(true);//@formatter:on}this.clientSettings=builder.build();}这里多说一下,publicclient不是简单的authorization_code方式授权,而是必须加上PKCE。OAuth2ClientAuthenticationProvider被细分。SpringAuthorizationServer目前支持的客户端认证方式有:client_secret_basicclient_secret_postclient_secret_jwtprivate_key_jwtnone之前由OAuth2ClientAuthenticationProvider处理,现在职责分离。JwtClientAssertionAuthenticationProvider负责private_key_jwt和client_secret_jwt,详情请关注我的专栏。目前胖哥已经实现了一个完整的private_key_jwt认证DEMO。ClientSecretAuthenticationProvider负责默认的client_secret_basic和client_secret_post。PublicClientAuthenticationProvider处理上面提到的公共客户端的认证方法。InMemoryOAuth2AuthorizationService优化主要优化OAuth2Authorization存储未完成授权信息的淘汰策略。如果内存中存储的数量超过100,则最旧的存储信息将被淘汰。新增DEMO联邦身份模式(FederatedIdentityPattern)例如,如果同时连接多个身份提供者(IDP),则需要跳转到不同的授权服务器页面,并输入相应的密码。现在这些IDP都可以放在SpringAuthorizationServer下,委托给SpringAuthorizationServer来处理身份认证和授权。这样就不用跳来跳去了,只需要在SpringAuthorizationServer中维护IDP的关系即可。请注意,此功能不是Spring授权服务器本身的原生功能。OAuth2TokenGenerator0.2.3对OAuth2Token的生成模型进行了抽象:@FunctionalInterfacepublicinterfaceOAuth2TokenGenerator
