久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

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

 米老鼠的世界 2021-03-03

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

復(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ù)制代碼

 

先來解釋一下上圖的名詞:

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

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

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

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

 

再來解釋一下上圖的大致流程:

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

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

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

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

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

(F) 資源服務(wù)器確認(rèn)令牌無誤,,同意向客戶端應(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)行互動。廣泛用于各種第三方認(rèn)證,。

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

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

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

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

 

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),,同時附上一個授權(quán)碼,。

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

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

 

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),,向后者請求令牌,。

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

 

令牌刷新(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)我們申請token后,,Authorization Server不僅給了我們Access Token,,還有Refresh Token。當(dāng)Access Token過期后,,我們用Refresh Token訪問/refresh端點就可以拿到新的Access Token了,。

 

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多