簡單認識OAuth2.0

簡單認識OAuth2.0

簡單認識OAuth2.0

什麼是OAuth2.0

OAuth是一個開發標準,在這種標準下允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源數據,無須將用戶名和密碼提供給第三方應用。

OAuth2.0是OAuth協議的第二個版本,關注客戶端開發者的簡易性,同時為Web應用、桌面應用和手機等設備提供專門的認證流程。

官方介紹:

The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf.

OAuth中的角色

OAuth 2.0為用戶和應用定義瞭如下角色:

  • 資源擁有者(Resource Owner)
  • 資源服務器(Resource Server)
  • 客戶端應用(Client Application第三方應用)
  • 授權服務器(Authorization Server)
簡單認識OAuth2.0

角色

舉個例子,現在的微信中的小程序就是此類授權,第三方開的小程序,需要授權時彈窗授權頁面,而不是把賬號密碼告訴第三方,我們授權後,第三方獲取一個Token去訪問微信的指定資源。

OAuth2.0協議流程

OAuth 2.0流程描述了四種角色之間的交互,包括以下步驟:

  • 客戶端從資源所有者處請求授權。
  • 客戶端收到資源所有者的授權。
  • 客戶端獲得授權後,拿著授權向授權服務器申請令牌。
  • 授權服務器驗證客戶端身份並驗證授權許可,若有效則頒發訪問令牌。
  • 客戶端拿令牌向資源服務器請求獲取資源。
  • 資源服務器驗證訪問令牌,若有效則開放資源訪問。
簡單認識OAuth2.0

協議流程

令牌與密碼(以下內容來源網絡)

令牌(token)與密碼(password)的作用是一樣的,都可以進入系統,但是有差異。

(1)令牌是短期的,到期會自動失效,用戶自己無法修改。密碼一般長期有效,用戶不修改,就不會發生變化。

(2)令牌可以被數據所有者撤銷,會立即失效。密碼一般不允許被他人撤銷。

(3)令牌有權限範圍(scope)。對於網絡服務來說,只讀令牌就比讀寫令牌更安全。密碼一般是完整權限。

上面這些設計,保證了令牌既可以讓第三方應用獲得權限,同時又隨時可控,不會危及系統安全。這就是 OAuth 2.0 的優點。

注意,只要知道了令牌,就能進入系統。系統一般不會再次確認身份,所以令牌必須保密,洩漏令牌與洩漏密碼的後果是一樣的。 這也是為什麼令牌的有效期,一般都設置得很短的原因。


分享到:


相關文章: