擁抱Spring全新OAuth解決方案

以下全文 Spring Authorization Server 簡稱為: SAS

背景

  • Spring 團(tuán)隊(duì)正式宣布 Spring Security OAuth 停止維護(hù)谓苟,該項(xiàng)目將不會再進(jìn)行任何的迭代
image.png
  • 目前 Spring 生態(tài)中的 OAuth2 授權(quán)服務(wù)器是 Spring Authorization Server 已經(jīng)可以正式生產(chǎn)使用
  • 作為 SpringBoot 3.0 的過渡版本 SpringBoot 2.7.0 過期了大量關(guān)于 SpringSecurity 的配置類,如沿用舊版本過期配置無法向上升級谴分。

遷移過程

本文以PIG 微服務(wù)開發(fā)平臺為演示,適用于 Spring Security OAuth 2.3 <-> 2.5 的認(rèn)證中心遷移

① Java 1.8 支持

目前最新的 SAS 0.3 基于 Java 11 構(gòu)建嗜愈,低版本 Java 無法使用

經(jīng)過和 Spring Security 官方團(tuán)隊(duì)的溝通 0.3.1 將繼續(xù)兼容 Java 1.8

image.png

我們聯(lián)合 springboot 中文社區(qū)編譯了適配 java 1.8 的版本坐標(biāo)如下

  <dependency>
      <groupId>io.springboot.security</groupId>
      <artifactId>spring-security-oauth2-authorization-server</artifactId>
      <version>0.3.0</version>
  </dependency>

② 授權(quán)模式擴(kuò)展

image.png
  • 擴(kuò)展支持密碼模式,SAS 基于 oauth 2.1 協(xié)議不支持密碼模式

  • 擴(kuò)展支持短信登錄

③ Redis 令牌存儲

image.png
  • 官方目前沒有提供基于 Redis 令牌持久化方案

  • PIG 擴(kuò)展 PigRedisOAuth2AuthorizationService 支持

④ Token 輸出格式化

  • 使用自省令牌的情況下 默認(rèn)實(shí)現(xiàn)為
ku4R4n7YD1f584KXj4k_3GP9o-HbdY-PDIIh-twPVJTmvHa5mLIoifaNhbBvFNBbse6_wAMcRoOWuVs9qeBWpxQ5zIFrF1A4g1Q7LhVAfH1vo9Uc7WL3SP3u82j0XU5x
image.png
  • 為方便結(jié)合 redis 高效檢索 token ,結(jié)合 RDM 分組也可以更方便的圖形化觀察
統(tǒng)一前綴::令牌類型::客戶端ID::用戶名::uuid
@Bean
public OAuth2TokenGenerator oAuth2TokenGenerator() {
  CustomeOAuth2AccessTokenGenerator accessTokenGenerator = new CustomeOAuth2AccessTokenGenerator();
  // 注入Token 增加關(guān)聯(lián)用戶信息
  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)用戶信息
{
    "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è)性化

image.png
1654488906.gif

⑦ 資源服務(wù)器

  • 自省方案擴(kuò)展支持資源資源服務(wù)器本地查詢
image.png
  • 擴(kuò)展資源服務(wù)器本地自省
image.png

- 優(yōu)勢: 1. 用戶狀態(tài)實(shí)時(shí)更新 2. 減少網(wǎng)絡(luò)調(diào)用提升性能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市羔巢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖竿秆,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件启摄,死亡現(xiàn)場離奇詭異,居然都是意外死亡幽钢,警方通過查閱死者的電腦和手機(jī)歉备,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匪燕,“玉大人蕾羊,你說我怎么就攤上這事∶毖保” “怎么了肚豺?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長界拦。 經(jīng)常有香客問我,道長梗劫,這世上最難降的妖魔是什么享甸? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮梳侨,結(jié)果婚禮上蛉威,老公的妹妹穿的比我還像新娘。我一直安慰自己走哺,他們只是感情好蚯嫌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丙躏,像睡著了一般择示。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晒旅,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天栅盲,我揣著相機(jī)與錄音,去河邊找鬼废恋。 笑死谈秫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鱼鼓。 我是一名探鬼主播拟烫,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迄本!你這毒婦竟也來了硕淑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喜颁,沒想到半個(gè)月后稠氮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡半开,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年隔披,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寂拆。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奢米,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纠永,到底是詐尸還是另有隱情鬓长,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布尝江,位于F島的核電站涉波,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炭序。R本人自食惡果不足惜啤覆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惭聂。 院中可真熱鬧窗声,春花似錦、人聲如沸辜纲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耕腾。三九已至见剩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扫俺,已是汗流浹背炮温。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牵舵,地道東北人柒啤。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像畸颅,于是被迫代替她去往敵國和親担巩。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容