繁體中文

開發者工具 · JWT 解碼器

為什麼短期存取權杖很重要:JWT 一旦發行就無法撤銷

· 為什麼它很重要

jwt 身份驗證 安全

外部撤銷決定旁邊的簽章令牌時間線
原始 ToolAcre 向量圖

自包含令牌在過期之前一直有效,無論其間發生什麼情況。這篇文章解釋了撤銷問題、可用的緩解措施,以及為什麼 exp 是您設定的最重要的宣告。

不註銷的註銷-會話結束後繼續工作的令牌

註銷可以刪除瀏覽器的本機副本,而先前頒發的獨立令牌仍然可以被僅檢查簽名和宣告的驗證者接受。使用者體驗顯示“已登出”,但另一個持有者可能會保留相同的緊湊憑證,直到策略邊界阻止它為止。

這不是解碼器可以解決的問題。 ToolAcre 可能會顯示 `exp` 值,並稱其相對於瀏覽器時鐘已過期,但它沒有會話儲存、拒絕清單或頒發者連線。撤銷行為屬於核發和使用憑證的體系結構。

無狀態驗證及其價格-沒有中央清單意味著沒有中央終止開關

無狀態驗證允許資源伺服器評估加密資料和宣告,而無需查詢每個請求的中央會話記錄。刪除該查找也會刪除自然的每個會話切換,除非再增加另一個有狀態機制。該交易是建築性的,而不是僅在 JSON 中可見的財產。

令牌可以包含 `jti`,但在驗證者查閱可信任儲存或規則之前,識別碼沒有撤銷效果。同樣,在帳戶被停用後,簽名在數學上仍然有效。應用程式接受需要當前的策略,而不僅僅是某些金鑰簽署的歷史位元組的證明。

過期和刷新設計可以限制暴露,但此儲存庫沒有定義標準生命週期

系統通常將有界存取憑證與單獨的刷新機制結合起來,但此儲存庫沒有定義通用生命週期或宣告一個持續時間是合理的。風險、使用者體驗、偵測和基礎設施約束各不相同,因此本文不會發明代幣生命週期指引。

原則更窄:如果驗證者強制執行經過驗證的 `exp`,則過期邊界可以限制被盜存取權杖的有用時間。然後,刷新處理可以在頒發另一個憑證之前查閱更多狀態。 ToolAcre 僅顯示宣告;它既不執行也不執行刷新。

jti 拒絕清單 — 為需要立即撤銷的案例重新引入狀態

由 `jti` 鍵控的拒絕清單可以為所選令牌重新引入立即決策點。這需要唯一的識別碼、可信任的插入路徑、儲存可用性和驗證者查找策略。僅僅解碼 `jti` 並不能顯示唯一性或證明儲存包含它。

根據設計,相同的狀態可以支援帳戶範圍或特定於會話的失效。它還恢復了無狀態驗證避免的操作依賴性。明確評估快取故障、保留和傳播,而不是將拒絕清單作為自由切換。

自省和密鑰輪換 - 詢問發行人,或立即使所有內容無效

內省向權威機構詢問當前代幣狀態,將接受轉變為線上決策。金鑰輪換可以停止已刪除金鑰下的驗證,但它可能會立即使許多令牌失效,並不能精確地取代會話撤銷。這些機制解決不同的操作問題。

ToolAcre 不知道它們目前的狀態。解碼的發行者、金鑰標識符或過期時間可以幫助找到相關記錄,但專家小組從不聯繫發行者,也從不驗證簽名。使用權威服務遙測來了解令牌是否處於活動狀態、撤銷或拒絕狀態。

工作範例:計算宣告的間隔而不判斷是否合理

對於受控範例,從 `exp` 中減去數字 `iat` 以計算有效負載聲明的間隔。如果 `iat` 為 1,717,243,200 且 `exp` 為 1,717,246,800,則差異為 3,600 秒。 ToolAcre 也將每個數值顯示為 ISO 時刻。

算術不判斷區間。它無法證明任一宣告是由預期方發出的,並存儲庫不提供建議的生命週期。僅在驗證後將經過驗證的值與記錄的策略進行比較,然後測試註銷和撤銷狀態如何影響實際請求。

這沒有涵蓋什麼——刷新令牌存儲和輪換,這是他們自己的設計問題

刷新令牌儲存、輪換和重播偵測是單獨的設計主題。刷新令牌可能是不透明的,可能具有不同的處理方式,並不應僅僅因為存取令牌被拒絕而將其發送到資源 API。此解碼器是專門圍繞類似 JWS 的三部分輸入而設計的。

不要將刷新憑證貼到其中。如果刷新令牌是不透明的,則可能沒有任何有用的解碼資訊;如果是結構化的,揭露仍然會帶來信用風險。使用提供者的可信任工具和日誌診斷發行流程。

過期是驗證、撤銷狀態和憑證設計之間的一種槓桿

過期很有用,但不是完整的撤銷策略,也不是解碼器的判決。消費系統必須驗證令牌、執行時間和受眾策略並諮詢其架構所需的任何撤銷狀態。每種機制都有可用性和操作後果。

僅使用 ToolAcre 來觀察安全性令牌中的值。它可以回答「這個有效負載要求什麼間隔?」它無法回答「現在應該接受這個請求嗎?」或「此會話是否被撤銷?」這些問題屬於值得信賴的服務。