現在開放平台非常流行,例如微信開放平台、微博開放平台等,開放平台都涉及用戶授權問題,OAuth2就是目前的主流授權解決方案
OAuth2是什么
OAuth(Open Authorization,開放授權)是為用戶資源的授權定義了一個安全、開放及簡單的標准,第三方無需知道用戶的賬號及密碼,就可獲取到用戶的授權信息
OAuth在"客戶端"與"服務提供商"之間,設置了一個授權層,"客戶端"不能直接登錄"服務提供商",只能登錄授權層,以此將用戶與客戶端區分開 來,"客戶端"登錄授權層是使用令牌(token),"客戶端"登錄授權層以后,"服務提供商"根據令牌的權限范圍和有效期,向"客戶端"開放用戶儲存的 資料
OAuth2的實現機制
在OAuth2的授權機制中有4個核心對象
(1)Resource Owner(資源擁有者:用戶)
(2)Client (第三方接入平台:請求者,例如網站)
(3)Resource Server (資源服務器,存儲例如用戶信息等資源)
(4)Authorization Server (認證服務器)

(1)用戶在第三方應用上點擊登錄,應用向認證服務器發送請求,說有用戶希望進行授權操作,同時說明自己是誰、用戶授權完成后的回調url
(2)認證服務器展示給用戶自己的授權界面
(3)用戶進行授權操作,認證服務器驗證成功后,生成一個授權編碼code,並跳轉到第三方的回調url
(4)第三方應用拿到code后,連同自己在平台上的身份信息(ID密碼)發送給認證服務器,再一次進行驗證請求,說明自己的身份正確,並且用戶也已經授權我了,來換取訪問用戶資源的權限
(5)認證服務器對請求信息進行驗證,如果沒問題,就生成訪問資源服務器的令牌access_token,交給第三方應用
(6)第三方應用使用access_token向資源服務器請求資源
(7)資源服務器驗證access_token成功后返回響應資源