第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JWT(JSONWeb令牌)自動(dòng)延長到期時(shí)間

JWT(JSONWeb令牌)自動(dòng)延長到期時(shí)間

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

3 回答

?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

我在Auth0工作,我參與了刷新令牌特性的設(shè)計(jì)。

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

Web應(yīng)用

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

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

要刷新令牌,API需要一個(gè)新的端點(diǎn),它接收有效的而不是過期的JWT,并返回與新過期字段相同的簽名JWT。然后Web應(yīng)用程序會(huì)將令牌存儲(chǔ)在某個(gè)地方。

移動(dòng)/本地應(yīng)用程序

大多數(shù)本地應(yīng)用程序只登錄一次。

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

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

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

我們認(rèn)為JWT對這些用例沒有用處,所以我們使用一個(gè)隨機(jī)生成的字符串,并將它存儲(chǔ)在自己的一側(cè)。


查看完整回答
反對 回復(fù) 2019-07-17
?
達(dá)令說

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

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

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

例如,當(dāng)用戶重置密碼時(shí),數(shù)據(jù)庫后端中的“reauth”標(biāo)志將被設(shè)置。當(dāng)用戶下次登錄時(shí),該標(biāo)志將被移除。

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


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

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

當(dāng)我在后端使用RESTfulAPI將我們的應(yīng)用程序遷移到HTML 5時(shí),我一直在修補(bǔ)。我想出的解決辦法是:

  1. 在成功登錄時(shí),向客戶端發(fā)出一個(gè)令牌,會(huì)話時(shí)間為30分鐘(或任何通常的服務(wù)器端會(huì)話時(shí)間)。
  2. 創(chuàng)建一個(gè)客戶端計(jì)時(shí)器來調(diào)用服務(wù),以便在令牌到期之前對其進(jìn)行更新。新令牌將取代未來呼叫中的現(xiàn)有令牌。

如您所見,這減少了頻繁的刷新令牌請求。如果用戶在觸發(fā)更新令牌調(diào)用之前關(guān)閉了瀏覽器/應(yīng)用程序,則前一個(gè)令牌將過期,用戶將不得不重新登錄。

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

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


查看完整回答
反對 回復(fù) 2019-07-17
  • 3 回答
  • 1 關(guān)注
  • 9257 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號