久等|全面擁抱Spring全新OAuth解決方案
PIG 微服務(wù)開(kāi)發(fā)平臺(tái)?v3.5 發(fā)布,正式支持?Spring Authorization Server?
以下全文 Spring Authorization Server 簡(jiǎn)稱(chēng)為: SAS?
本文以PIG 微服務(wù)[1]開(kāi)發(fā)平臺(tái)為演示,適用于 Spring Security OAuth 2.3 <-> 2.5 的認(rèn)證中心遷移
背景
Spring 團(tuán)隊(duì)正式宣布 Spring Security OAuth 停止維護(hù),該項(xiàng)目將不會(huì)再進(jìn)行任何的迭代

目前 Spring 生態(tài)中的 OAuth2 授權(quán)服務(wù)器是 Spring Authorization Server 已經(jīng)可以正式生產(chǎn)使用 作為 SpringBoot 3.0 的過(guò)渡版本 SpringBoot 2.7.0 過(guò)期了大量關(guān)于 SpringSecurity 的配置類(lèi),如沿用舊版本過(guò)期配置無(wú)法向上升級(jí)。
遷移過(guò)程
① Java 1.8 支持
目前最新的 SAS 0.3 基于 Java 11 構(gòu)建,低版本 Java 無(wú)法使用
經(jīng)過(guò)和 Spring Security 官方團(tuán)隊(duì)的溝通 0.3.1 將繼續(xù)兼容 Java 1.8

我們聯(lián)合 springboot 中文社區(qū)編譯了適配 java 1.8 的版本坐標(biāo)如下
??<dependency>
??????<groupId>io.springboot.securitygroupId>
??????<artifactId>spring-security-oauth2-authorization-serverartifactId>
??????<version>0.3.0version>
??dependency>
② 授權(quán)模式擴(kuò)展

擴(kuò)展支持密碼模式,SAS 基于 oauth 2.1 協(xié)議不支持密碼模式
擴(kuò)展支持短信登錄
③ Redis 令牌存儲(chǔ)

官方目前沒(méi)有提供基于 Redis 令牌持久化方案
PIG 擴(kuò)展 PigRedisOAuth2AuthorizationService 支持
④ Token 輸出格式化
使用自省令牌的情況下 默認(rèn)實(shí)現(xiàn)為
ku4R4n7YD1f584KXj4k_3GP9o-HbdY-PDIIh-twPVJTmvHa5mLIoifaNhbBvFNBbse6_wAMcRoOWuVs9qeBWpxQ5zIFrF1A4g1Q7LhVAfH1vo9Uc7WL3SP3u82j0XU5x

為方便結(jié)合 redis 高效檢索 token ,結(jié)合 RDM 分組也可以更方便的圖形化觀察
統(tǒng)一前綴::令牌類(lèi)型::客戶(hù)端ID::用戶(hù)名::uuid
@Bean
public?OAuth2TokenGenerator?oAuth2TokenGenerator()?{
??CustomeOAuth2AccessTokenGenerator?accessTokenGenerator?=?new?CustomeOAuth2AccessTokenGenerator();
??//?注入Token?增加關(guān)聯(lián)用戶(hù)信息
??accessTokenGenerator.setAccessTokenCustomizer(new?CustomeOAuth2TokenCustomizer());
??return?new?DelegatingOAuth2TokenGenerator(accessTokenGenerator,?new?OAuth2RefreshTokenGenerator());
}
⑤ Token 輸出增強(qiáng)
使用自省令牌,默認(rèn)情況下輸出的 Token 格式
{
????"access_token":?"xx",
????"refresh_token":?"xx",
????"scope":?"server",
????"token_type":?"Bearer",
????"expires_in":?43199
}
Token 增強(qiáng)輸出關(guān)聯(lián)用戶(hù)信息
{
????"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":?{}
????}
}
⑥ 授權(quán)碼模式個(gè)性化


⑦ 資源服務(wù)器
自省方案擴(kuò)展支持資源資源服務(wù)器本地查詢(xún)

擴(kuò)展資源服務(wù)器本地自省

- 優(yōu)勢(shì):1. 用戶(hù)狀態(tài)實(shí)時(shí)更新 2. 減少網(wǎng)絡(luò)調(diào)用提升性能
參考資料
PIG 微服務(wù): https://github.com/pig-mesh/pig
評(píng)論
圖片
表情
