1、介紹
2、舉一個栗子
當我們要訪問一個網站的時候一般都會有微信、QQ登陸。這種第三方授權登陸就是OAuth2.0要乾的活。比如美團點評的校招網站。這個是需要微信登陸的。
流程:
(1)客戶端請求第三方授權
用戶進入美團程序的登錄頁面,點擊微信的圖標以微信賬號登錄系統,用戶是自己在微信裏信息的資源擁有者。
(2)資源擁有者同意給客戶端授權
資源擁有者掃描二維碼錶示資源擁有者同意給客戶端授權,微信會對資源擁有者(我)的身份進行驗證, 驗證通過後,微信會詢問用戶是否給授權美團訪問自己的微信數據,用戶點擊“確認登錄”表示同意授權,微信認證服務器會 頒發一個授權碼,並重定向到美團的網站。
(3)客戶端獲取到授權碼,請求認證服務器申請令牌
此過程用戶看不到,客戶端應用程序請求認證服務器,請求攜帶授權碼。
(4)認證服務器向客戶端相應授權
微信認證服務器驗證了客戶端請求的授權碼,如果合法則給客戶端頒發令牌,令牌是客戶端訪問資源的通行證。 此交互過程用戶看不到,當客戶端拿到令牌後,用戶在美團看到已經登錄成功。
(5)客戶端請求資源服務器的資源
客戶端攜帶令牌訪問資源服務器的資源。 美團網站攜帶令牌請求訪問微信服務器獲取用戶的基本信息。
(6)資源服務器返回受保護的資源
資源服務器校驗令牌的合法性,如果合法則向用戶響應資源信息內容。
再來看一張圖:
這是官方的一張圖:
OAauth2.0包括以下角色:
(客戶端):本身不存儲資源,需要通過資源擁有者的授權去請求資源服務器的資源,比如:Android客戶端、Web客戶端(瀏 覽器端)、微信客戶端等。
(資源擁有者):通常爲用戶,也可以是應用程序,即該資源的擁有者。
(授權服務器):用於服務提供商對資源擁有的身份進行認證、對訪問資源進行授權,認證成功後會給客戶端發放令牌 (access_token),作爲客戶端訪問資源服務器的憑據。本例爲微信的認證服務器
(資源服務器):存儲資源的服務器,本例子爲微信存儲的用戶信息。 現在還有一個問題,服務提供商能允許隨便一個客戶端就接入到它的授權服務器嗎?答案是否定的,服務提供商會 給准入的接入方一個身份,用於接入時的憑據: client_id:客戶端標識 client_secret:客戶端祕鑰 因此,準確來說,授權服務器對兩種OAuth2.0中的兩個角色進行認證授權,分別是資源擁有者、客戶端。
也就是說美團點評必須要在微信那“註冊”,獲取一個cliend_id和cliend_secret。