Spring Authorization Server 0.2.3發佈,放出聯合身份DEMO

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章