当前位置: 首页 > 后端技术 > Java

SpringAuthorizationServer0.2.3发布,联合身份DEMO

时间:2023-04-01 15:08:26 Java

发布在即!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{@NullableTgenerate(OAuth2TokenContextcontext);}OAuth2授权码使用统一的Token生成模型。需要通过OAuth2TokenGenerator来实现,实现类为OAuth2AuthorizationCodeGenerator。OAuth2RefreshToken使用统一的Token生成模型OAuth2RefreshTokenOAuth2RefreshToken现在也需要通过OAuth2TokenGenerator来实现。JWT的生成采用了统一的模型。现在JWT的生成也是通过OAuth2TokenGenerator来实现的,具体的实现类是JwtGenerator。支持不透明令牌现在可以自定义一个OAuth2TokenGenerator,注入到SpringIoC中实现自定义令牌生成逻辑,也就是说不透明令牌也可以通过自定义来实现。现在可以自定义令牌自省过滤器配置。在0.2.3版本之前,令牌内省的配置由OAuth2AuthorizationServerConfigurer负责。现在由独立的配置类OAuth2TokenIntrospectionEndpointConfigurer负责。依赖升级0.2.3也升级了一些依赖,具体为:更新到Reactor2020.0.16更新到SpringSecurity5.5.5更新到SpringFramework5.3.16更新到SpringBoot2.5.10胖哥也会跟进变化,逐步升级依赖项。关注公众号:Felordcn获取更多资讯个人博客:https://felord.cn