成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實(shí)戰(zhàn)!微服務(wù)認(rèn)證中心如何擴(kuò)展授權(quán)模式實(shí)現(xiàn)多種方式登錄?

開發(fā) 前端
每種授權(quán)類型都對應(yīng)一種TokenGranter,其中會定義授權(quán)類型的名稱,比如密碼模式的ResourceOwnerPasswordTokenGranter,其中的GRANT_TYPE為password。

本篇文章介紹一下Spring Security如何擴(kuò)展新的授權(quán)類型,也是實(shí)際開發(fā)中非常重要的知識點(diǎn)。

目錄如下:

圖片圖片

為什么需要自定義授權(quán)類型?

前面介紹OAuth2.0的基礎(chǔ)知識點(diǎn)時介紹過支持的4種授權(quán)類型,分別如下:

  • 授權(quán)碼模式
  • 簡化模式
  • 客戶端模式
  • 密碼模式

實(shí)際生產(chǎn)中上述四種授權(quán)類型根本不夠用,比如常見的授權(quán)類型如下:

  • 微信認(rèn)證
  • QQ認(rèn)證
  • 手機(jī)號+驗(yàn)證碼認(rèn)證
  • 圖形驗(yàn)證碼認(rèn)證
  • 郵箱認(rèn)證

因此我們必須懂得OAuth2.0如何自定義授權(quán)類型,這也是本篇文章的重點(diǎn)。

實(shí)現(xiàn)思路

Spring Security 定制授權(quán)類型其實(shí)很簡單,主要是掌握其中的思路,下面是密碼模式的授權(quán)流程,如下圖:

圖片圖片

根據(jù)上述流程圖可以跟著源碼進(jìn)去看看,不難發(fā)現(xiàn)有幾個如下重要點(diǎn):

  • 每種授權(quán)類型都對應(yīng)一個實(shí)現(xiàn)類TokenGranter,其中定義著授權(quán)類型
  • 所有 TokenGranter 實(shí)現(xiàn)類都通過 CompositeTokenGranter 中的 tokenGranters 集合存起來。
  • 然后通過判斷 grantType 參數(shù)來定位具體使用那個 TokenGranter 實(shí)現(xiàn)類來處理授權(quán)。
  • 每種授權(quán)方式都對應(yīng)一個AuthenticationProvider
  • TokenGranter 類會 new 一個 AuthenticationToken實(shí)現(xiàn)類,如 UsernamePasswordAuthenticationToken 傳給 ProviderManager 類。

因此想要自定義一個授權(quán)類型,必須構(gòu)建自己的TokenGranter、AuthenticationProvider、AuthenticationToken。

代碼實(shí)現(xiàn)

下面就以手機(jī)號+密碼的登錄方式定義一個類型:mobile_pwd,剩下的自己照葫蘆畫瓢。

1、自定義UserDetailService

這個和密碼授權(quán)類型類似,要實(shí)現(xiàn)一個方法從數(shù)據(jù)庫中根據(jù)手機(jī)號查詢用戶的詳細(xì)信息。

定義一個SmsCodeUserDetailService接口如下:

圖片圖片

主要就是一個 loadUserByMobile() 方法,實(shí)現(xiàn)類如下:

圖片圖片

2、自定義AuthenticationToken

類似于密碼模式的中UsernamePasswordAuthenticationToken,自定義一個MobilePasswordAuthenticationToken封裝手機(jī)號和密碼,如下:

圖片圖片

3、自定義TokenGranter

每種授權(quán)類型都對應(yīng)一種TokenGranter,其中會定義授權(quán)類型的名稱,比如密碼模式的ResourceOwnerPasswordTokenGranter,其中的GRANT_TYPE為password。

自定義一個MobilePwdGranter,照葫蘆畫瓢,模仿著改改,代碼如下:

圖片圖片

4、自定義AuthenticationProvider

這個類就是真正的處理類,經(jīng)過TokenGranter后,會找到對應(yīng)的AuthenticationProvider,然后取出參數(shù)從數(shù)據(jù)庫(UserDetailService)中查詢對應(yīng)的信息進(jìn)行匹配。

自定義MobilePasswordAuthenticationProvider,代碼如下:

圖片圖片

圖片圖片

案例源碼已上傳GitHub,關(guān)注公眾號:碼猿技術(shù)專欄,回復(fù)關(guān)鍵:9529 獲取!

5、將自定義的MobilePasswordAuthenticationProvider注入IOC容器

這里必須將自定義的MobilePasswordAuthenticationProvider注入到IOC容器,如果不注入,會報(bào)找不到能處理的AuthenticationProvider這個異常。

新建SmsCodeSecurityConfig,代碼如下:

圖片圖片

注意:由于使用的外部配置,因此必須在全局配置中指定

6、Security的全局配置指定SmsCodeSecurityConfig

由于是分開配置,因此必須在全局配置中指定才會生效,代碼如下:

圖片圖片

7、加到CompositeTokenGranter集合中

需要將自定義的授權(quán)類型加到集合CompositeTokenGranter中,此處需要修改認(rèn)證中心的配置類(AuthorizationServerConfig)中的代碼,如下:

圖片圖片

8、oauth_client_details表中添加授權(quán)類型

oauth_client_details這個表是存儲客戶端的詳細(xì)信息的,需要在對應(yīng)的客戶端資源那一行中的authorized_grant_types這個字段中添加自定義的授權(quán)類型,多個用逗號分隔。

圖片圖片

測試

經(jīng)過上述的步驟已經(jīng)配置完成,下面來測試,啟動服務(wù),請求如下:

圖片圖片

源碼獲取

授權(quán)類型主要是針對 認(rèn)證中心(oauth2-cloud-auth-server) 的改動,改動的目錄如下:

圖片圖片

陳某直接在之前網(wǎng)關(guān)整合Spring Security的源碼上更改了一版。

責(zé)任編輯:武曉燕 來源: 碼猿技術(shù)專欄
相關(guān)推薦

2022-03-03 08:51:09

微服務(wù)認(rèn)證中心授權(quán)模式

2022-05-12 07:37:51

單點(diǎn)登錄微服務(wù)開源

2021-03-09 09:33:42

網(wǎng)關(guān)授權(quán)微服務(wù)

2022-09-22 10:01:47

微服務(wù)授權(quán)認(rèn)證

2024-06-05 06:43:20

2024-03-18 08:48:52

Spring多端認(rèn)證微服務(wù)

2020-12-17 08:10:19

身份驗(yàn)證授權(quán)微服務(wù)

2023-12-29 18:53:58

微服務(wù)Saga模式

2023-09-07 23:25:34

微服務(wù)服務(wù)發(fā)現(xiàn)

2023-09-02 20:51:09

微服務(wù)業(yè)務(wù)服務(wù)

2021-01-07 08:43:11

微服務(wù)pipelineGitLabGroup

2022-07-22 14:32:29

賬號登錄服務(wù)鴻蒙

2022-07-13 13:34:30

微服務(wù)邊車SideCar

2022-12-19 16:51:52

AGC華為

2015-10-23 14:53:25

qq授權(quán)登陸

2025-03-31 08:35:00

Eureka微服務(wù)架構(gòu)

2024-12-27 10:12:28

2023-05-31 19:10:31

2022-04-09 14:45:02

微服務(wù)常見概念Spring

2024-05-06 11:25:57

微服務(wù)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www.色综合| 日韩精品1区2区 | 午夜一级做a爰片久久毛片 精品综合 | 性做久久久久久免费观看欧美 | 成人不卡视频 | 草草视频在线免费观看 | 91色网站 | 精品欧美乱码久久久久久 | 亚洲精品久久久久久一区二区 | 一级免费看 | 在线观看免费高清av | 99久久久久久99国产精品免 | 中日韩欧美一级片 | 日韩在线精品视频 | 国产精品久久久久久久免费大片 | 久久国产精品色av免费观看 | 欧美国产91 | 欧美成人高清视频 | 国产区免费视频 | 国产一区二区影院 | caoporn国产精品免费公开 | 91porn成人精品 | 国产激情视频在线 | 久久精品国产99国产精品 | 91pron在线 | 国产精品精品久久久久久 | 久久久久国产精品免费免费搜索 | 成人夜晚看av | 久久99蜜桃综合影院免费观看 | 国内自拍偷拍 | 久久九| 精品99久久久久久 | 日本一区二区视频 | 国产精品日韩欧美 | 天天操天天干天天透 | 亚洲免费精品 | 亚洲成人免费 | 精品国产乱码一区二区三 | 久久精品| 黄色网一级片 | 日韩精品一区二区三区视频播放 |