很快啊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_jwt
和client_secret_jwt
,具體細節請關注我的專欄。
目前胖哥已經實現了完整的private_key_jwt
認證的DEMO。
ClientSecretAuthenticationProvider
預設的client_secret_basic
和client_secret_post
由它負責。
PublicClientAuthenticationProvider
處理上面所說的公開客戶端的認證方式。
InMemoryOAuth2AuthorizationService優化
主要優化了對未完成授權資訊OAuth2Authorization
儲存的淘汰策略,如果記憶體中儲存的數量超過100
,會把最老儲存的資訊淘汰掉。
增加了聯合身份的DEMO
Federated Identity Pattern (聯合身份模式)舉個例子,你同時對接了好幾個身份提供商(IDP),你都需要跳不同的授權伺服器頁面並輸入對應的密碼,現在這些IDP可以都放在Spring Authorization Server下面,委託給Spring Authorization Server來處理身份認證授權。這樣你不用跳來跳去了,只需要維護Spring Authorization Server中IDP的關係了。
請注意該功能不是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 獲取更多資訊