亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JWT(JSONWeb令牌)自動延長到期時間

JWT(JSONWeb令牌)自動延長到期時間

守著一只汪 2019-07-17 19:08:15
JWT(JSONWeb令牌)自動延長到期時間我想對我們的新RESTAPI實現基于JWT的身份驗證。但是,由于到期是在令牌中設置的,那么是否可以自動延長它呢?如果用戶在這段時間內積極使用應用程序,我不希望用戶在每隔X分鐘注冊一次。那將是一個巨大的UX失敗。但是延長過期會創建一個新令牌(舊令牌在過期之前仍然有效)。在每次請求之后生成一個新的令牌對我來說聽起來很傻。當多個令牌同時有效時,聽起來就像是一個安全問題。當然,我可以使用黑名單使舊的已使用的標記失效,但是我需要存儲令牌。JWT的好處之一是沒有存儲。我發現Auth0是如何解決這個問題的。它們不僅使用JWT令牌,還使用刷新令牌:https://docs.auth0.com/refresh-token但是,要實現這個(沒有Auth0),我需要存儲刷新令牌并維護它們的過期。那麼,真正的好處是甚麼呢?為什么不只有一個令牌(而不是JWT)并將過期保存在服務器上呢?還有其他選擇嗎?是否使用JWT不適合此場景?
查看完整描述

3 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

我在Auth0工作,我參與了刷新令牌特性的設計。

這取決于應用程序的類型,下面是我們推薦的方法。

Web應用

一個好的模式是在令牌到期之前刷新它。

將令牌過期設置為一周,每次用戶打開Web應用程序時刷新令牌,每一小時刷新一次。如果用戶在超過一周內不打開應用程序,他們將不得不再次登錄,這是可以接受的Web應用程序UX。

要刷新令牌,API需要一個新的端點,它接收有效的而不是過期的JWT,并返回與新過期字段相同的簽名JWT。然后Web應用程序會將令牌存儲在某個地方。

移動/本地應用程序

大多數本地應用程序只登錄一次。

這樣做的想法是,刷新令牌永遠不會過期,并且可以始終將其交換為有效的JWT。

一個永不過期的令牌的問題是絕不可能意味著永遠不會。如果你的手機丟了怎么辦?因此,它需要被用戶以某種方式識別,并且應用程序需要提供一種撤銷訪問的方法。我們決定使用設備的名稱,例如“maryo的ipad”。然后用戶可以進入應用程序并撤銷對“maryo‘s ipad”的訪問。

另一種方法是撤銷特定事件的刷新令牌。一個有趣的事件是更改密碼。

我們認為JWT對這些用例沒有用處,所以我們使用一個隨機生成的字符串,并將它存儲在自己的一側。


查看完整回答
反對 回復 2019-07-17
?
達令說

TA貢獻1821條經驗 獲得超6個贊

在您自己處理auth的情況下(即不使用類似于Auth0的提供程序),以下內容可能有效:

  1. 以相對較短的到期時間(例如15分鐘)發出JWT令牌。
  2. 應用程序在任何需要令牌的事務之前檢查令牌過期日期(令牌包含到期日期)。如果令牌已經過期,那么它首先要求API‘刷新’令牌(這是透明地對UX進行的)。
  3. API獲得令牌刷新請求,但首先檢查用戶數據庫,查看是否針對該用戶配置文件設置了“reauth”標志(令牌可以包含用戶id)。如果存在標志,則拒絕令牌刷新,否則將發出新令牌。
  4. 重復一遍。

例如,當用戶重置密碼時,數據庫后端中的“reauth”標志將被設置。當用戶下次登錄時,該標志將被移除。

此外,假設您有一個策略,用戶必須至少每72小時登錄一次。在這種情況下,您的API令牌刷新邏輯還將檢查用戶從用戶數據庫中的最后登錄日期,并在此基礎上拒絕/允許令牌刷新。


查看完整回答
反對 回復 2019-07-17
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

當我在后端使用RESTfulAPI將我們的應用程序遷移到HTML 5時,我一直在修補。我想出的解決辦法是:

  1. 在成功登錄時,向客戶端發出一個令牌,會話時間為30分鐘(或任何通常的服務器端會話時間)。
  2. 創建一個客戶端計時器來調用服務,以便在令牌到期之前對其進行更新。新令牌將取代未來呼叫中的現有令牌。

如您所見,這減少了頻繁的刷新令牌請求。如果用戶在觸發更新令牌調用之前關閉了瀏覽器/應用程序,則前一個令牌將過期,用戶將不得不重新登錄。

可以實施更復雜的策略來滿足用戶的不活動(例如,忽略了打開的瀏覽器選項卡)。在這種情況下,更新令牌調用應該包括預期的到期時間,不應超過定義的會話時間。應用程序必須相應地跟蹤最后的用戶交互。

我不喜歡設置長期過期的想法,因此這種方法在需要較少頻繁身份驗證的本地應用程序中可能不能很好地工作。


查看完整回答
反對 回復 2019-07-17
  • 3 回答
  • 1 關注
  • 9271 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號