Access Token 與 Refresh Token


  access token 是在 Oauth2.0 協議中,客戶端訪問資源服務器的令牌(其實就是一段全局唯一的隨機字符串)。擁有這個令牌代表着得到用戶的授權。它里面包含哪些信息呢?答案是:

 

  哪個用戶  在什么時候  授權給哪個客戶端  去做什么事情

 

  對於 Oauth2.0 不了解的讀者,請看我的另一篇文章:簡單介紹 Oauth2.0 原理

 

  這個授權是臨時的,有一定有效期。這是因為,access token 在使用的過程中可能會泄露。給 access token 限定一個較短的有效期可以降低因 access token 泄露而帶來的風險。

  然而引入了有效期之后,客戶端使用起來就不那么方便了。每當 access token 過期,客戶端就必須重新向用戶索要授權。這樣用戶可能每隔幾天,甚至每天都需要進行授權操作。這是一件非常影響用戶體驗的事情。希望有一種方法,可以避免這種情況。

  於是 Oauth2.0 引入了 refresh token 機制。refresh token 的作用是用來刷新 access token。鑒權服務器提供一個刷新接口,例如:

 

  POST /refresh

   參數: refreshtoken

   返回:新的 access token

 

  傳入 refresh token,鑒權服務器驗證通過后,返回一個新的 access token。為了安全,Oauth2.0 引入了兩個措施:

  1,Oauth2.0 要求,refresh token 一定是保存在服務器上(應用方的服務器)的,而絕不能存放在狹義的客戶端(例如移動 app、PC端軟件、瀏覽器) 上。調用 refresh 接口的時候,一定是從服務器到服務器的訪問;

  2,Oauth2.0 引入了 client_id 、client_secret 機制。即每一個應用都會被分配到一個 client_id 和一個對應的 client_secret。應用必須把 client_secret 妥善保管在服務器上,決不能泄露。刷新 access token 時,需要驗證這個 client_secret。

  於是,實際上的刷新接口應該是類似這樣的:

 

  POST /refresh

   參數:

    refresh token

    client_id

    signatrue 簽名,由 sha256(client_id + refresh_token + client_secret) 得到

   返回:新的 access token

 

  以上就是 refresh token 機制。refresh token 的有效期非常長,會在用戶授權時,隨 access token 一起重定向到回調 url,傳遞給應用。

 

        若有疑問,可以直接評論。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM