一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Spring Cloud(6):保護(hù)微服務(wù)(Security)

 米老鼠的世界 2021-03-03

OAuth2是一個(gè)授權(quán)(Authorization)協(xié)議。我們要和Spring Security的認(rèn)證(Authentication)區(qū)別開來(lái),認(rèn)證(Authentication)證明的你是不是這個(gè)人,而授權(quán)(Authorization)則是證明這個(gè)人有沒有訪問這個(gè)資源(Resource)的權(quán)限。
下面這張圖來(lái)源于OAuth 2.0 authorization framework RFC Document,是OAuth2的一個(gè)抽象流程。

復(fù)制代碼
     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+
復(fù)制代碼

 

先來(lái)解釋一下上圖的名詞:

  Resource Owner:資源所有者,即用戶

  Client:客戶端應(yīng)用程序(Application)

  Authorization Server:授權(quán)服務(wù)器

  Resource Server:資源服務(wù)器

 

再來(lái)解釋一下上圖的大致流程:

(A) 用戶連接客戶端應(yīng)用程序以后,客戶端應(yīng)用程序要求用戶給予授權(quán)

(B) 用戶同意給予客戶端應(yīng)用程序授權(quán)

(C) 客戶端應(yīng)用程序使用上一步獲得的授權(quán)(Grant),向授權(quán)服務(wù)器申請(qǐng)令牌

(D) 授權(quán)服務(wù)器對(duì)客戶端應(yīng)用程序的授權(quán)(Grant)進(jìn)行驗(yàn)證后,確認(rèn)無(wú)誤,發(fā)放令牌

(E) 客戶端應(yīng)用程序使用令牌,向資源服務(wù)器申請(qǐng)獲取資源

(F) 資源服務(wù)器確認(rèn)令牌無(wú)誤,同意向客戶端應(yīng)用程序開放資源

 

從上面的流程可以看出,如何獲取授權(quán)(Grant)才是關(guān)鍵。在OAuth2中有4種授權(quán)類型:

  1. Authorization Code(授權(quán)碼模式):功能最完整、流程最嚴(yán)密的授權(quán)模式。通過第三方應(yīng)用程序服務(wù)器與認(rèn)證服務(wù)器進(jìn)行互動(dòng)。廣泛用于各種第三方認(rèn)證。

  2. Implicit(簡(jiǎn)化模式):不通過第三方應(yīng)用程序服務(wù)器,直接在瀏覽器中向認(rèn)證服務(wù)器申請(qǐng)令牌,更加適用于移動(dòng)端的App及沒有服務(wù)器端的第三方單頁(yè)面應(yīng)用。

  3. Resource Owner Password(密碼模式):用戶向客戶端服務(wù)器提供自己的用戶名和密碼,用戶對(duì)客戶端高度信任的情況下使用,比如公司、組織的內(nèi)部系統(tǒng),SSO。

  4. Client Credentials(客戶端模式):客戶端服務(wù)器以自己的名義,而不是以用戶的名義,向認(rèn)證服務(wù)器進(jìn)行認(rèn)證。

下面主要講最常用的(1)和(3)。此外,還有一個(gè)模式叫Refresh Token,也會(huì)在下面介紹。

 

Authorization Code(授權(quán)碼模式)

復(fù)制代碼
     +----------+
     | Resource |
     |   Owner  |
     |          |
     +----------+
          ^
          |
         (B)
     +----|-----+          Client Identifier      +---------------+
     |         -+----(A)-- & Redirection URI ---->|               |
     |  User-   |                                 | Authorization |
     |  Agent  -+----(B)-- User authenticates --->|     Server    |
     |          |                                 |               |
     |         -+----(C)-- Authorization Code ---<|               |
     +-|----|---+                                 +---------------+
       |    |                                         ^      v
      (A)  (C)                                        |      |
       |    |                                         |      |
       ^    v                                         |      |
     +---------+                                      |      |
     |         |>---(D)-- Authorization Code ---------'      |
     |  Client |          & Redirection URI                  |
     |         |                                             |
     |         |<---(E)----- Access Token -------------------'
     +---------+       (w/ Optional Refresh Token)

   Note: The lines illustrating steps (A), (B), and (C) are broken into
   two parts as they pass through the user-agent.
復(fù)制代碼

它的步驟如下:

(A) 用戶(Resource Owner)通過用戶代理(User-Agent)訪問客戶端(Client),客戶端索要授權(quán),并將用戶導(dǎo)向認(rèn)證服務(wù)器(Authorization Server)。

(B) 用戶選擇是否給予客戶端授權(quán)。

(C) 假設(shè)用戶給予授權(quán),認(rèn)證服務(wù)器將用戶導(dǎo)向客戶端事先指定的"重定向URI"(redirection URI),同時(shí)附上一個(gè)授權(quán)碼。

(D) 客戶端收到授權(quán)碼,附上早先的"重定向URI",向認(rèn)證服務(wù)器申請(qǐng)令牌。這一步是在客戶端的后臺(tái)的服務(wù)器上完成的,對(duì)用戶不可見。

(E) 認(rèn)證服務(wù)器核對(duì)了授權(quán)碼和重定向URI,確認(rèn)無(wú)誤后,向客戶端發(fā)送訪問令牌(access token)和更新令牌(refresh token)。這一步也對(duì)用戶不可見。

 

Resource Owner Password(密碼模式)

復(fù)制代碼
     +----------+
     | Resource |
     |  Owner   |
     |          |
     +----------+
          v
          |    Resource Owner
         (A) Password Credentials
          |
          v
     +---------+                                  +---------------+
     |         |>--(B)---- Resource Owner ------->|               |
     |         |         Password Credentials     | Authorization |
     | Client  |                                  |     Server    |
     |         |<--(C)---- Access Token ---------<|               |
     |         |    (w/ Optional Refresh Token)   |               |
     +---------+                                  +---------------+

            Figure 5: Resource Owner Password Credentials Flow
復(fù)制代碼

它的步驟如下:

(A) 用戶(Resource Owner)向客戶端(Client)提供用戶名和密碼。

(B) 客戶端將用戶名和密碼發(fā)給認(rèn)證服務(wù)器(Authorization Server),向后者請(qǐng)求令牌。

(C) 認(rèn)證服務(wù)器確認(rèn)無(wú)誤后,向客戶端提供訪問令牌。

 

令牌刷新(refresh token)

復(fù)制代碼
  +--------+                                           +---------------+
  |        |--(A)------- Authorization Grant --------->|               |
  |        |                                           |               |
  |        |<-(B)----------- Access Token -------------|               |
  |        |               & Refresh Token             |               |
  |        |                                           |               |
  |        |                            +----------+   |               |
  |        |--(C)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(D)- Protected Resource --| Resource |   | Authorization |
  | Client |                            |  Server  |   |     Server    |
  |        |--(E)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(F)- Invalid Token Error -|          |   |               |
  |        |                            +----------+   |               |
  |        |                                           |               |
  |        |--(G)----------- Refresh Token ----------->|               |
  |        |                                           |               |
  |        |<-(H)----------- Access Token -------------|               |
  +--------+           & Optional Refresh Token        +---------------+
復(fù)制代碼

具體流程不再分析,我們已知,當(dāng)我們申請(qǐng)token后,Authorization Server不僅給了我們Access Token,還有Refresh Token。當(dāng)Access Token過期后,我們用Refresh Token訪問/refresh端點(diǎn)就可以拿到新的Access Token了。

 

本節(jié)只講概念,在接下來(lái)的幾節(jié)中會(huì)搭建一組含有Client Application, Authorization Server, Resource Server的微服務(wù)群,并使用Eureka和Config組件管理。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    很黄很污在线免费观看| 91在线播放在线播放观看| 日韩和欧美的一区二区三区| 初尝人妻少妇中文字幕在线| 99国产精品国产精品九九| 青草草在线视频免费视频| 最好看的人妻中文字幕| 国产精品色热综合在线| 久久精品亚洲精品国产欧美| 国产日韩精品激情在线观看| 亚洲欧美日韩网友自拍| 老司机精品视频在线免费看| 黄色国产自拍在线观看| 久久热在线视频免费观看| 成人国产一区二区三区精品麻豆| 亚洲av熟女国产一区二区三区站| 欧美成人一区二区三区在线| 国产又长又粗又爽免费视频| 黄色污污在线免费观看| 1024你懂的在线视频| 国产精品一区二区三区激情| 欧美成人黄色一级视频| 日本不卡在线一区二区三区| 人妻熟女欲求不满一区二区| 国产精品亚洲欧美一区麻豆| 国产一区二区三区丝袜不卡| 久久人妻人人澡人人妻| 二区久久久国产av色| 日本熟妇五十一区二区三区| 性感少妇无套内射在线视频| 老司机亚洲精品一区二区| 久久亚洲精品成人国产| 91精品国产综合久久精品| 国产美女精品人人做人人爽| 久久机热频这里只精品| 亚洲精品国产第一区二区多人| 国产情侣激情在线对白| 成人午夜激情免费在线| 亚洲一区二区精品免费视频| 91免费一区二区三区| 可以在线看的欧美黄片|