2017-08-01 55 views
1

我想了解如何實現我的應用程序JWT令牌認證應用。智威湯遜(OAuth的?)流量

據我所知,用戶在登錄請求中輸入憑證(用戶名+密碼),並同時接收訪問令牌(比如30分鐘)和刷新令牌(比如60天)。

每當Access令牌過期時,我將使用username + refreshtoken創建一個新的Access令牌。

1)第一個問題:這是正常的,每當發生這種情況,我所有的 主屏幕請求將直到我得到了新的內容和失敗,然後我 需要用新的重發請求訪問令牌?或者我應該在任何其他應用程序流之前在閃屏中執行令牌驗證 ?

這將持續到60天過去並刷新令牌到期。 ¿這裏發生了什麼?

我不記得曾經Facebook或(幾乎)所有應用程序再次請求我的憑據。

2)是否存儲了密碼,以便應用程序可以再次執行後臺登錄 以檢索兩個令牌? (我不希望存儲密碼以任何方式)

-

3)或者是到期前刷新令牌好歹刷新? (例如,只要用戶在60天之前一直打開應用,就刷新它)

+1

問題3 - JWT(JSON Web令牌)自動延長到期日期:https://stackoverflow.com/a/26834685/2124535 Auth0 dev的有深刻見解 – nathan

回答

0

1)如果您提供流暢的用戶體驗 - 例如,您可以將JWT過期錯誤與其他任何錯誤區分開來,並執行訪問令牌更新而不顯示錯誤。第二種方式也被使用,請參考所謂的「JWT滑動失效」並考慮其優缺點。主要原因是 - 您的授權服務器(AS)數據庫中是否存在大量有效的訪問令牌? 2)例如,某種程度上相關的RFC未指出不推薦這種背景JWT更新以這種方式流動。但是,考慮到刷新令牌等實體可用於獲取新的訪問令牌,其妥協可能導致更嚴重的後果。因此,在更新令牌更新之前需要某種用戶操作可能被認爲是更好的做法。

3)當然你應該考慮AS時會拋出「刷新令牌過期」錯誤的情況。讓我們看看你有訪問令牌+刷新令牌包,你有兩種類型的錯誤,只是爲了區別他們 - 「令牌驗證錯誤」(常見的一種,你不知道什麼是錯與您的任何令牌)和一般的「錯誤「(這顯然與代幣無關)。

  1. 您執行一些請求。響應是「令牌驗證錯誤」。您建議訪問令牌已過期並使用您的刷新令牌執行訪問令牌更新流程。
  2. 你再次獲得「令牌驗證錯誤」的迴應。您建議您的刷新令牌已過期並開始執行刷新令牌更新流程。

如此簡單的使用JWT的工作流程可能如下所示。