OAuth 2.0 受權碼認證

參考文章

組成成分

  • 用戶
  • 應用1
  • 應用2

流程

用戶在應用1瀏覽、使用的過程當中,涉及到要使用應用2功能的時候,就產生了 oauth 認證!html

如下具體步驟參考的是:Laravel passport OAuth 認證laravel

A. 登陸受權

應用1攜帶以下查詢字符串:數據庫

response_type client_id redirect_uri scope state
code xxx http://app.com/callback '' auth

跳轉到應用2的登陸受權界面,用戶輸入應用2的帳號、密碼進行登陸,登陸後彈出是否對應用1受權。api

B. 生成受權碼

若是用戶選擇贊成受權,那麼應用2將生成受權碼並攜帶受權碼跳轉回應用1提供的 redirect_uri。這個 redirect_uri 中能夠作任意事情,好比保存受權碼,後期再獲取 token,或者繼續認證步驟,經過受權碼獲取 token,這邊要注意的是受權碼的有效期!通常受權碼有效期都較短,10min 左右。app

C. 獲取 token

以前都是採起連接跳轉的方式(Get 請求)執行操做,到目前的獲取 token 步驟後應使用 post 方式在服務端經過 curl 完成!!curl

應用1提供以下參數(redirect_uri 要和 A 步驟中的一致!!):post

grant_type client_id client_secret redirect_uri code
authorization_code xxx xxx http://app.com/callback xxx

嚮應用2發起 post 請求獲取 token,應用2認證相關參數,經過後響應以下數據:url

{
    token_type: '' , 
    access_token: 'xxx' ,
    refresh_token: 'xxx' , 
    expire: 'YYYY-MM-DD HH:II:SS'
}

應用1獲取數據保存到數據庫。code

D. 調用

應用1調用應用2的 api,在應用1上提供應用2的服務!server

應用1在請求頭上攜帶:

Authorization: token_type access_token

調用應用2的 api 獲取數據。

釋疑

get/post 請求方式是如何肯定的??

get/post 請求方式由實現方肯定,即:應用2。我上面舉的例子中是推薦採用的請求方式,實際請求方式應該根據實現方提供的開發文檔肯定!

以下字段是如何獲取的??

client_id       應用id
client_secret   應用密鑰
redirect_uri    重定向 uri

// 通常還須要提供
app_name 應用名稱
app_url  應用網址
....等

應用1提早嚮應用2申請提供的

相關文章
相關標籤/搜索