以下全文 Spring Authorization Server 簡稱為: SAS
本文以PIG 微服務開發平臺為演示,適用於 Spring Security OAuth 2.3 <-> 2.5 的認證中心遷移
目前最新的 SAS 0.3 基於 Java 11 構建,低版本 Java 無法使用
經過和 Spring Security 官方團隊的溝通 0.3.1 將繼續相容 Java 1.8
我們聯合 springboot 中文社群編譯了適配 java 1.8 的版本座標如下
<dependency>
<groupId>io.springboot.security</groupId>
<artifactId>spring-security-oauth2-authorization-server</artifactId>
<version>0.3.0</version>
</dependency>
擴充套件支援密碼模式,SAS 基於 oauth 2.1 協定不支援密碼模式
擴充套件支援簡訊登入
官方目前沒有提供基於 Redis 令牌持久化方案
PIG 擴充套件 PigRedisOAuth2AuthorizationService 支援
ku4R4n7YD1f584KXj4k_3GP9o-HbdY-PDIIh-twPVJTmvHa5mLIoifaNhbBvFNBbse6_wAMcRoOWuVs9qeBWpxQ5zIFrF1A4g1Q7LhVAfH1vo9Uc7WL3SP3u82j0XU5x
統一字首::令牌型別::使用者端ID::使用者名稱::uuid
@Bean
public OAuth2TokenGenerator oAuth2TokenGenerator() {
CustomeOAuth2AccessTokenGenerator accessTokenGenerator = new CustomeOAuth2AccessTokenGenerator();
// 注入Token 增加關聯使用者資訊
accessTokenGenerator.setAccessTokenCustomizer(new CustomeOAuth2TokenCustomizer());
return new DelegatingOAuth2TokenGenerator(accessTokenGenerator, new OAuth2RefreshTokenGenerator());
}
{
"access_token": "xx",
"refresh_token": "xx",
"scope": "server",
"token_type": "Bearer",
"expires_in": 43199
}
{
"sub": "admin",
"clientId": "test",
"access_token": "xx",
"refresh_token": "xx",
"license": "https://pig4cloud.com",
"user_info": {
"username": "admin",
"accountNonExpired": true,
"accountNonLocked": true,
"credentialsNonExpired": true,
"enabled": true,
"id": 1,
"deptId": 1,
"phone": "17034642999",
"name": "admin",
"attributes": {}
}
}
- 優勢: 1. 使用者狀態實時更新 2. 減少網路呼叫提升效能