OAuth 2.0 官方文檔 閱讀理解

寫在前面:根據OAuth 2.0 官方文檔,由兩個翻譯器翻譯後整理成人話,記錄下來。

 

OAuth 2.0 授權框架

概述

      OAuth 2.0授權框架支持第三方應用程序以獲取對HTTP服務的有限訪問,可以在通過編排審批交互來代表資源所有者在資源所有者和HTTP服務之間,或者通過允許代表第三方應用程序獲取訪問權限。

介紹


      在傳統的客戶端 - 服務器身份驗證模型中,客戶端請求訪問受限資源(受保護資源)通過使用資源所有者的資格證書。
爲了讓第三方應用程序能夠訪問受限資源,資源所有者與第三方應用程序共享資源所有者的憑據。這會產生一些問題和限制:

  • 需要第三方應用程序來存儲資源所有者的憑證供將來使用,通常是密碼明文。
  • 服務器需要支持密碼身份驗證,儘管密碼有安全弱點。
  • 第三方應用程序對資源所有者的資源訪問能力過於廣泛(因爲擁有資源所有者的密碼,和資源所有者的權限一樣了),使資源所有者沒有限制第三方應用程序持續時間或訪問資源範圍。
  • 資源所有者無法單個撤銷第三方的訪問,而不用對所有第三方訪問的進行撤銷,撤銷必須通過修改第三方的密碼方式進行。
  • 任何第三方應用程序的受損,可能會導致最終用戶的密碼和受其保護的所有數據受損。

       OAuth通過引入授權層來解決這些問題將客戶端的角色與資源所有者的角色分離。在OAuth中,客戶端請求由資源所有者託管在資源服務器上的受控資源,並且發行了一套與資源所有者不同的憑證。

       而不是使用資源所有者的憑證來訪問受保護的資源,客戶端獲得一個訪問字符串令牌(字符串中記錄令牌的特定範圍、生存期限和其他訪問屬性)。訪問令牌由資源所有者批准頒發。客戶端使用訪問令牌去訪問由資源服務器承載的受保護資源。

四個角色

  • 資源所有者

能夠授予對受保護資源的訪問權限的實體。當資源所有者是一個人時,它被稱之爲最終用戶。

  • 資源服務器

託管受保護資源的服務器,能夠接受並使用訪問令牌響應受保護資源的資源請求。

  • 客戶端

代表資源所有者授權發出對受保護資源請求的應用程序。術語“客戶端”並不意味着任何特定的實現特性(例如,應用程序是在服務器、臺式機還是在其他服務器的設備上執行)。

  • 授權服務器

資源所有者驗證成功後,獲得向客戶端頒發訪問令牌的服務器。

授權服務器可以是與資源服務器在相同的服務器上,也可以是單獨的實體。單個授權服務器可以向多個資源服務器進行授權管理。

協議流程

抽象協議流程圖

抽象協議流程圖解釋

(A)客戶端請求資源所有者的授權。授權請求可以直接向資源所有者提出,或者最好間接通過授權服務器作爲中介。
(B)客戶端收到授予的授權,即代表資源所有者授權的憑證。使用下面定義的四種授予類型之一表示指定或者使用擴展授權類型。這個授權授予類型取決於請求授權的客戶端和授權服務器。
(C)客戶端通過使用資源所有者授予的授權向授權服務器申請訪問令牌。
(D)授權服務器驗證客戶端身份與資源所有者授予的授權,如果有效,則頒發訪問令牌。
(E) 客戶端通過提供訪問令牌進行身份驗證去資源服務器請求受保護的資源。
(F)資源服務器驗證訪問令牌,如果有效,則滿足客戶端的服務請求。

OAuth 2.0 的核心思想是向第三方應用程序頒發訪問令牌。

授權方法


OAuth 2.0 提供了四種授予客戶端訪問令牌的方法:

  • 授權碼
  • 隱藏式
  • 密碼式
  • 客戶端憑證
     

授權碼的授權方式是最推薦的授權獲取訪問令牌的方法。選擇哪種方法進行令牌授予需根據自己的需要去選擇適合的。

1. 授權碼(Authorization Code)

       指的是第三方應用程序先向授權服務器在資源所有者確認之後申請一個授權碼,然後在使用授權碼去資源服務器申請一個訪問令牌。

       資源服務器驗證訪問令牌,如果有效,滿足請求。使用授權服務器作爲客戶端與資源所有者的中介,來授予授權代碼。而不是直接從資源所有者請求授權,將資源所有者定向到授權服務器,授權服務器反過來將資源所有者允許的授權代碼返回給客戶端。

       在使用授權代碼時。授權服務器驗證資源所有者並獲得授權。因爲資源所有者僅使用授權服務器進行身份驗證,資源所有者的憑證從不與客戶端共享。
       授權碼提供了一些重要的安全好處,例如驗證客戶端的能力,以及通過資源所有者的用戶代理將訪問令牌直接傳輸到客戶端,將訪問令牌暴露給其他人,包括資源所有者。

2. 隱藏式(Implicit)

       隱藏式流程中是指允許直接向前端頒發令牌,而不是通過授權服務器這個中介向客戶端發送授權碼,這種方式沒有了授權碼方式中的獲取授權的過程。客戶端直接獲取訪問令牌。

       隱藏式流程相對不安全,所以隱藏式的訪問令牌的生命週期因該很短,如會話期間有效,關閉瀏覽器後,訪問令牌的生命週期也就結束了。

3. 密碼式(Resource Owner Password Credentials)

       資源所有者的密碼憑證(即用戶名和密碼)可以直接用作授權授予以獲得訪問權限令牌。憑證僅存在高級別信任度的資源所有者與客戶端之間(如,客戶端是設備操作系統的一部分,或者是特權很高的客戶端申請)。

      密碼式流程需要將用戶的用戶名密碼告訴客戶端,風險很大,無可奈何時纔會使用,並且是高信任度的應用程序。

4.客戶端憑證(Client Credentials)

        客戶端憑據(或其他形式的客戶端身份驗證)可以當授權範圍爲僅限於受客戶端控制的受保護資源,或對先前經授權安排的受保護資源服務器。
        客戶端憑據用作授權授予通常當客戶代表自己行事時(客戶是也是資源所有者)或正在請求訪問受保護的基於先前與授權服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章