OAuth2.0受權碼模式

OAuth2.0簡單說就是一種受權的協議,OAuth2.0在客戶端與服務提供商之間,設置了一個受權層(authorization layer)。客戶端不能直接登陸服務提供商,只能登陸受權層,以此將用戶與客戶端區分開來。而後客戶端在登陸時候不使用帳號密碼,而是使用會自動過時的令牌tokenhtml

定義比較難理解,能夠舉個例子,假如咱們要登陸豆瓣網,能夠你是沒帳號的,又不想註冊,而後這時候能夠用QQ登陸,登陸時候會轉跳到QQ登陸頁面,這個就是QQ就是一個認證服務器,豆瓣是服務提供商,也能夠說是資源服務器git

在這裏插入圖片描述

  • (A)打開客戶端,重定向,請求給予受權。服務器

  • (B)用戶開始給予客戶端受權url

  • (C)客戶端使用得到的受權,向認證服務器申請令牌。code

  • (D)客戶端拿受權碼去認證服務器認證,確認提供贊成發放令牌。htm

  • (E)認證經過,客戶端使用令牌,向資源服務器申請獲取資源。blog

  • (F)資源服務器確認令牌無誤,贊成向客戶端開放資源。token

OAuth2.0受權方式:圖片

  • 受權碼模式(authorization code)
  • 簡化模式(implicit)
  • 密碼模式(resource owner password credentials)
  • 客戶端模式(client credentials)

通常認證受權過程須要的參數:ci

  • response_type:受權類型,必選項
  • client_id:客戶端的ID,必選項
  • redirect_uri:重定向URI,可選項
  • scope:申請的權限範圍,可選項
  • state:客戶端的當前狀態,能夠指定任意值,認證服務器會原封不動地返回這個值

其實總結一下,Oauth2.0用受權碼方式,無非就是用戶訪問客戶端就直接重定向到認證服務器,而後輸入帳號密碼等等經過驗證後,認證服務器會重定向到redirect_uri並將受權碼附在url上,而後再拿受權碼去認證,認證經過發放令牌,登陸成功

參考資料:

http://www.rfcreader.com/#rfc6749_line1019

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

https://gitee.com/sunym1993/datauoauthqq_bean

http://www.javashuo.com/article/p-qmneepek-u.html

相關文章
相關標籤/搜索