參考文章:http://www.cnblogs.com/Irving/p/9343377.htmlhtml
1、 OAuth2.0 基礎數據庫
概念:OAuth2.0 一個受權框架,它容許用戶讓第三方應用訪問該用戶在某服務的特定私有資源,可是不提供帳號密碼消息給第三方應用瀏覽器
角色:
安全
受權模式:服務器
Authorization code(受權碼模式)框架
標準的 Server 受權模式,很是適合 Server 端的 Web 應用。一旦資源的擁有者受權訪問他們的數據以後,他們將會被重定向到 Web 應用並在 URL 的查詢參數中附帶一個受權碼(code)。在客戶端裏,該 code 用於請求訪問令牌(access_token)。而且該令牌交換的過程是兩個服務端以前完成的,防止其餘人甚至是資源擁有者本人獲得該令牌。另外,在該受權模式下能夠經過 refresh_token 來刷新令牌以延長訪問受權時間,也是最爲複雜的一種方式。優化
Implicit Grant(隱式模式)code
該模式是全部受權模式中最簡單的一種,併爲運行於瀏覽器中的腳本應用作了優化。當用戶訪問該應用時,服務端會當即生成一個新的訪問令牌(access_token)並經過URL的#hash段傳回客戶端。這時,客戶端就能夠利用JavaScript等將其取出而後請求API接口。該模式不須要受權碼(code),固然也不會提供refresh token以得到長期訪問的入口。server
Resource Owner Password Credentials(密碼模式)htm
本身有一套用戶體系,這種模式要求用戶提供用戶名和密碼來交換訪問令牌(access_token)。該模式僅用於很是值得信任的用戶,例如API提供者本人所寫的移動應用。雖然用戶也要求提供密碼,但並不須要存儲在設備上。由於初始驗證以後,只需將 OAuth 的令牌記錄下來便可。若是用戶但願取消受權,由於其真實密碼並無被記錄,所以無需修改密碼就能夠當即取消受權。token自己也只是獲得有限的受權,所以相比最傳統的 username/password 受權,該模式依然更爲安全。
Client Credentials(客戶端模式)
沒有用戶的概念,一種基於 APP 的密鑰直接進行受權,所以 APP 的權限很是大。它適合像數據庫或存儲服務器這種對 API 的訪問需求。
2、OAuth2.0受權流程
3、Refresh Token流程
刷新的流程如圖所示: