開發者工具 · JWT 解碼器
RFC 7519 和 JOSE 系列:JWT、JWS、JWE、JWK 和 JWA 解釋
· 背景
jwt 密碼學 標準
JWT 是 IETF JOSE 工作小組規格系列的成員之一。這篇文章解釋了每個 RFC 的定義、它們如何組合在一起,以及為什麼 JWT 通常是 JWS。
五個首字母縮寫詞,一個標記 — 為什麼當您只詢問 JWT 時文件會提到 JWS 和 JWE
令牌檔案在 JWT、JWS、JWE、JWK 和 JWA 之間移動,因為它們描述了相同生態系統的不同層。當「JWT」被用作每個緊湊的三部分簽名令牌的簡寫時,混亂就開始了。將宣告與信封和金鑰表示分離使得實現更容易推理。
ToolAcre 的解碼器故意比該系列更窄。它處理三個部分 JWS 形狀的輸入,其前兩個解碼段是 JSON 物件。它偵測到五部分加密的緊湊輸入並停止,因為在沒有接收者金鑰的情況下讀取密文不會解碼相同的內容。
JOSE檔案定義了相關格式;該儲存庫沒有建立他們的工作小組時間表
相關規範來自 IETF JOSE 工作,但儲存庫來源並未建立大綱要求的詳細組織時間表。因此,本文避免發明日期或流程歷史記錄,而是集中討論工具和計畫中可觀察到的格式關係。
實際問題是哪一層擁有每個決策。宣告名稱描述應用程式語句,簽章保護編碼材料,加密保護內容,JSON 金鑰物件表示金鑰訊息,演演算法標識符名稱操作。沒有一個縮寫詞可以取代其他縮寫詞。
JWS (RFC 7515) — 簽署任意內容和緊湊序列化 JWT 使用
JWS 描述簽署或受 MAC 保護的內容。其緊湊形式由三個部分組成:受保護的標頭、有效負載和簽名。簽名輸入使用由點連接的前兩個編碼段。 JWT 通常在此信封中傳輸,這是 ToolAcre 分割和檢查的形式。
標頭和有效負載可以解碼為 JSON,而簽章是位元組而不是第三個物件。 ToolAcre 報告簽名的存在和大小,但始終將其標記為未經驗證。因此它可以說明 JWS 結構而無需宣告任何加密結果。
JWE (RFC 7516) — 加密內容,具有五個部分序列化
JWE 描述加密內容。它的緊湊形式有五個部分,分別代表受保護的標頭、加密金鑰材料、初始化值、密文和身份驗證標籤。因此,四個點是一個強大的結構線索,表明由三個部分組成的 JWT 解碼器已收到不同的包絡。
ToolAcre 發出特定的 JWE 錯誤,並解釋說沒有解密金鑰就無法讀取內容。它不會將密文視為格式錯誤的 JSON 或嘗試顯示隨機位元組。加密和簽名也可以組合,但巢狀處理不在此路線之外。
JWK 和 JWA(RFC 7517 和 7518) — 將金鑰表示為 JSON 並命名演演算法
JWK 為加密金鑰資訊提供 JSON 表示形式,而 JWA 命名演演算法識別碼和 JOSE 中使用的相關參數。它們的存在並不意味著令牌可以選擇自己的可信密鑰或演演算法。驗證者必須受到發行者和應用程式策略的約束。
ToolAcre 演演算法註解僅解釋來源中存在的有限標籤集,並呼叫任何其他無法辨識的標籤。它們是描述,而不是實現。解碼器既不導入 JWK,也不執行來自 JWA 的演演算法,這使檢查邊界保持明確。
JWT (RFC 7519) — JWS 或 JWE 上的宣告格式
JWT 定義宣告物件和註冊名稱,例如頒發者、主題、受眾和 NumericDates。這些宣告可以以簽署或加密的 JOSE 結構來承載。因此,有效負載層回答“表示什麼語句”,而信封回答如何保護或隱藏這些位元組。
ToolAcre 期望解碼後的有效負載是 JSON 物件並列出其宣告。此工具拒絕數組、數字或空值。即使形狀良好的物件也仍然不受信任,直到相關信封被配置的驗證者或接收者處理為止。
這不包括什麼 - 後面的配置檔案,例如 RFC 8725 最佳實踐和 RFC 9068 訪問令牌,它們有自己的帖子
後來的最佳實務和設定檔可以縮小這些通用機制的使用方式。它們應該單獨對待,因為基本格式不提供特定於應用程式的發行者、受眾或代幣類型策略。本文並不聲稱解碼器實現任何此類設定檔。
在審查系統時,寫下確切的設定檔、預期的範圍、可接受的演演算法、關鍵來源和宣告規則。此列表可以防止縮寫詞熟悉變成相容性或安全性的假設。
重點:JWT 是宣告,JWS 是信封 — ToolAcre JWT 解碼器讀取 JWS 緊湊形式並顯示 JWT 標頭和內部宣告
JWT 命名宣告層; JWS和JWE提供保護外殼; JWK代表關鍵資料;JWA 命名演演算法選擇。 ToolAcre 讀取常見的三部分簽名形狀並顯示標頭和宣告,同時拒絕驗證或解密。
使用該地圖提出下一個問題。可讀 JSON 標識宣告層。三到五個部分可識別可能的信封系列。信任仍然依賴獨立配置的密碼學和策略,而不是依賴識別首字母縮寫的解碼器。