很快啊Spring Authorization Server又發新版本了,現在的版本是0.2.3。本次都有什麼改動呢?我們來瞭解一下。 0.2.3版本特性 本次更新的新特性不少。 為公開客戶端提供預設的設置 根據RFC6479,包含授權碼(authorization_code)授權並且客戶端認證方式 ...
很快啊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 獲取更多資訊
博主:碼農小胖哥 出處:felord.cn 本文版權歸原作者所有,不可商用,轉載需要聲明出處,否則保留追究法律責任的權利。如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。 |