什么是token


1.基於token的認證方式

在大多數使用Web API的互聯網公司中,tokens 是多用戶下處理認證的最佳方式。

以下幾點特性會讓你在程序中使用基於Token的身份驗證

1.無狀態、可擴展

2.支持移動設備

3.跨程序調用

4.安全

2.Token的起源

在介紹基於Token的身份驗證的原理與優勢之前,不妨先看看之前的認證都是怎么做的。

  • 基於服務器的驗證

我們都是知道HTTP協議是無狀態的,這種無狀態意味着程序需要驗證每一次請求,從而辨別客戶端的身份。

在這之前,程序都是通過在服務端存儲的登錄信息來辨別請求的。這種方式一般都是通過存儲Session來完成。

  • 基於服務器驗證方式暴露的一些問題

1.Seesion:每次認證用戶發起請求時,服務器需要去創建一個記錄來存儲信息。當越來越多的用戶發請求時,內存的開銷也會不斷增加。

2.可擴展性:在服務端的內存中使用Seesion存儲登錄信息,伴隨而來的是可擴展性問題。

3.CORS(跨域資源共享):當我們需要讓數據跨多台移動設備上使用時,跨域資源的共享會是一個讓人頭疼的問題。在使用Ajax抓取另一個域的資源,就可以會出現禁止請求的情況。

4.CSRF(跨站請求偽造):用戶在訪問銀行網站時,他們很容易受到跨站請求偽造的攻擊,並且能夠被利用其訪問其他的網站。

在這些問題中,可擴展行是最突出的。因此我們有必要去尋求一種更有行之有效的方法。

3.基於Token的驗證原理

基於Token的身份驗證是無狀態的,我們不將用戶信息存在服務器中。這種概念解決了在服務端存儲信息時的許多問題。NoSession意味着你的程序可以根據需要去增減機器,而不用去擔心用戶是否登錄。

基於Token的身份驗證的過程如下:

  1. 用戶通過用戶名和密碼發送請求。

  2. 服務器端程序驗證。

3.服務器端程序返回一個帶簽名token 給客戶端。

4.客戶端儲存token,並且每次訪問API都攜帶Token到服務器端的。

5.服務端驗證token,校驗成功則返回請求數據,校驗失敗則返回錯誤碼。

4.時序圖表示

使用 TokenRefresh Token 的時序圖如下:

1)登錄

 

2)業務請求

image

3) Token過期,刷新 Token
image

上面的時序圖中並未提到 Refresh Token 過期怎么辦。不過很顯然, Refresh Token 既然已經過期,就該要求用戶重新登錄了。


 


免責聲明!

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



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