繁體中文

開發者工具 · JWT 解碼器

JWT 標頭解釋:alg、typ、kid 和不信任欄位

· 工作原理

jwt 安全 身份驗證

解碼的 JWT 標頭停在驗證者信任邊界
原始 ToolAcre 向量圖

標頭告訴驗證者如何對令牌進行簽署以及使用哪個金鑰。這篇文章解釋了每個公共標頭欄位、驗證者可能依賴的內容以及令牌本身絕不能信任哪些欄位。

沒有人讀取的小 JSON 物件 - 以及它影響的驗證決策

標头小到足以被忽略,但其欄位经常参與驗證路由。這使得將可见性與权威混為一谈是危险的。 ToolAcre 將標頭解碼為 JSON 物件並顯示其屬性,但每個位元組都來自令牌持有者,並仍然是不受信任的輸入。

驗證者只能在從可信任配置建立的約束內使用標頭值。它不應該讓代幣發明可接受的演演算法、發行者或遠端密鑰來源。解碼器的工作以可讀的 JSON 加上警告結束;它從不選擇密钥或產生允許或拒绝的决定。

alg 顯示:解碼器僅解釋其實作中指定的演演算法

`alg` 声明令牌声明所使用的算法。 ToolAcre 有 HS256、HS384、HS512、RS256、RS384、RS512、ES256、ES384、ES512、PS256、PS384 和 PS512 的解釋性註釋,以及 `none` 的警告。任何其他字串都將顯示為無法識別,而不是視為受支援。

此列表是一個顯示功能,而不是 ToolAcre 可以驗證的演算法目錄:它不會驗證任何演算法。後端必須獨立固定其允許的選擇並拒絕不符。讀取 `alg: RS256` 不能證明使用了 RSA,就像讀取 `alg: none` 不能安全地授權未簽署的令牌一樣。

ty 和 cty — 宣告令牌類型、存取令牌的 at+jwt 設定檔以及巢狀 JWT

`typ` 描述製作者想要的媒體類型或設定檔。當字串值與 `JWT` 不同時,ToolAcre 會發出警告;它不強製設定檔語意。 `cty` 欄位可以描述巢狀內容,但目前解碼器沒有巢狀令牌處理路徑,並不會解釋該欄位。

明確鍵入可以幫助驗證者在其策略定義預期值時將不同的代幣類別分開。支票仍然属于该驗證者。令牌不能僅透過宣布首選標籤來使自己成為存取令牌,並解碼面板無法確定哪個應用程式端點應該使用它。

kids — 金鑰標識符,可讓驗證者在不停機的情況下輪換金鑰

`kid` 是密鑰標識符,不是密鑰材料,也不是所有權證明。轮換多個可信密钥的服務可以使用经過身份驗證的發行者上下文和受限標識符來定位候選者。標識符必須保留為受控查找的輸入,而不是檔案路徑、查詢片段或任意 URL。

ToolAcre 使 `kid` 在標頭 JSON 中可見,但未解析它。這種限制很重要:公共解碼頁面無法使用受信任的金鑰儲存。如果 401 遵循輪換,請將顯示的識別碼與伺服器端密鑰清單和日誌進行比較,而不假設令牌的建議密鑰是合法的。

jku、x5u、jwk 和 x5c — 指向密鑰的標頭欄位,以及為什麼驗證者絕不能盲目獲取或信任它們

諸如 `jku` 和 `x5u` 之類的欄位可以命名位置,而 `jwk` 和 `x5c` 可以攜帶與金鑰相關的資料。他們的存在並不會使這些位置或價值觀變得可信。僅僅因為提供了未經驗證的標頭而獲取 URL 或接受嵌入材料,就會將安全決策交給請求者。

安全驗證者透過令牌外部建立的發行者關係和網路策略來取得金鑰。 ToolAcre 既不取得標頭 URL,也不從嵌入的金鑰建立信任。在審核過程中,看到這些欄位之一是提示檢查驗證程式配置,而不是遵循標頭的指令。

crit — 驗證者必須瞭解或拒絕的擴展

`crit` 表示特定擴充功能需要收件者的理解。支援此類擴充功能的驗證程序需要針對未知關鍵名稱的明確實作和拒絕路徑。忽略不熟悉的關鍵標記可能會使生產者和消費者對受保護的內容有不同的解釋。

僅解碼實作不處理 `crit`,因此它可以顯示原始陣列而無需宣告相容性。這是檢查和驗證之間的另一個界限。如果生產令牌依賴關鍵擴展,請驗證實際庫和配置中的行為,而不是從可讀的 JSON 推斷支援。

工作範例 - 讀取實際標頭並決定哪些欄位通知驗證,哪些欄位僅提供信息

考虑 `{"alg":"RS256","typ":"JWT","kid":"rotate-7"}`。 ToolAcre 漂亮地列印所有三個欄位,並解釋 RS256 驗證需要頒發者公鑰。審閱者可以記下宣告的演演算法和金鑰標識符,然後將它們與伺服器的固定策略和可信任密鑰集進行比較。

這些欄位為調查提供信息,但不會獨立做出任何決定。如果伺服器僅允許其他演演算法,在正確的頒發者集中找不到 `rotate-7` 或拒絕簽名,則可讀標頭不會覆蓋該結果。同樣,在不重新計算有效簽名的情況下更改標題文字也不得被接受。

重點:標頭是輸入,而不是權限 — ToolAcre JWT 解碼器顯示標頭,以便您可以讀取它;驗證者必須獨立決定信任什麼

將 JWT 標頭視為輸入,而不是權限。其值可以幫助在配置已授權的選項中進行選擇,識別可能的輪換問題或解釋設定檔不符。他們無法建立對自己的演演算法、金鑰、URL 或令牌類型的信任。

使用 ToolAcre 讀取測試標頭並顯示可疑值,例如缺少 `alg`、`none` 或意外的 `typ`。然後轉到配置的驗證程序以做出每個相應的決策。無論標頭看起來多麼可信,解碼都不能證明真實性、完整性、授權或發行者身分。