開發者工具 · JWT 解碼器
如何使用 base64 和 jq 手動解碼 JWT 有效負載
· 工作原理
jwt 命令列 開發人員工作流程
在無頭盒子上,您仍然可以使用 cut、tr、base64 和 jq 讀取令牌。這篇文章提供了命令,解釋了每個命令執行的 base64url 轉換,並列出了陷阱。
透過 SSH 讀取令牌 — 當瀏覽器不可行時
無頭伺服器可能會給您留下令牌形狀的字串,並沒有瀏覽器 UI。所需的檢查工作仍然很小:隔離一個段落、翻譯 base64url 拼字、恢復填充、解碼位元組並解析 JSON。危險是操作性的而不是計算性的,因為 shell 歷史記錄可以保存即時憑證。
盡可能使用過期或合成令牌。如果事件回應需要檢查真實值,請遵循組織的憑證處理控制措施,防止其進入共享歷史記錄或日誌,並在暴露後輪換它。命令列解碼僅保留檢查;它不提供驗證金鑰或信任策略。
依點分割 — cut 或 awk 來隔離有效負載段
緊湊的 JWS 形狀 JWT 具有三個點分隔的欄位。有效負載是第二個。 shell 可以使用分隔符號感知工具將其拆分,但會引用變量,以便 shell 不會擴展字元或拆分空格。在選擇欄位之前刪除前導 `Bearer ` 標籤,因為該前綴屬於 HTTP 語法。
計算欄位數,而不是盲目地取欄位二。 ToolAcre 拒絕除三個部分以外的任何內容,並單獨識別五部分加密輸入。外殼管道應採取相同的結構謹慎措施;從格式錯誤的輸入接收片段可以產生合理的 JSON,同時隱藏原始標記被截斷。
轉換字母表 — tr 將連字符和底線轉回加號和斜杠
標準命令列 Base64 實作通常需要加號和斜杠,其中 JWT 段可能包含連字號和底線。將 `-` 轉換為 `+` 並將 `_` 轉換為 `/` 將 URL 安全符號對應回其標準位置,而不變更表示的六位元值。
使用其選項解析不能將前導連字元誤認為標誌的翻譯指令,並將資料保留在引號的變數或標準輸入中。字母轉換是可逆的編碼工作。它不會解密宣告,而且成功並不能確定令牌來自指定的發行者。
恢復填充 — 增加正確數量的等號的算術
轉換後,計算長度模四。餘數零不需要等號,餘數二需要兩個,餘數三需要一。餘數 1 表示截斷,應停止管道。附加任意填充直到公用事業停止抱怨可能會隱藏損壞而不是診斷它。
ToolAcre 在 `base64ToBytes` 中完全使用此長度規則,並拒絕不可能的餘數。 Shell 實用程式在是否接受省略的填充方面有所不同,因此首先規範化輸入使管道在概念上變得明確和可移植,儘管命令標誌在作業系統之間仍然可能有所不同。
解碼與漂亮列印 — base64 -d 透過管道傳輸到 jq
將填滿值經由管道傳送到平台的 Base64 解碼器,然後傳送到 `jq`。第一個命令恢復位元組;第二個需要這些位元組形成 JSON。成功的 Base64 命令後面跟著 jq 解析錯誤意味著編碼在結構上是可解碼的,但其內容不是 JSON 有效負載。
這種差異反映了 ToolAcre 的錯誤路徑。它首先報告無效的base64url或UTF-8,然後單獨報告無效的JSON,然後拒絕null、數組和基元,因為JWT標頭或有效負載必須是該工具的對象。將階段分開可以使失敗變得可行。
工作範例 — 範例令牌上的完整管道,每個階段都有輸出
作為一個綜合範例,有效負載段 `eyJzdWIiOiJkZW1vIiwicm9sZSI6InJlYWRlciJ9` 不需要字母轉換或填滿。解碼產生 `{"sub":"demo","role":"reader"}` 和跨行物件的 jq 格式。可見角色只是令牌提供的字串。
現在更改 JSON,再次對其進行編碼並附加任何第三段。管道仍然列印更改的物件。這證明了為什麼解碼命令不能用作有效性檢查:合法和捏造的宣告都會遍歷相同的公共轉換,除非單獨的驗證者檢查簽名。
陷阱 — shell 歷史捕獲令牌、拒絕缺失填充的 Base64 實作以及帶有前導「Bearer」的令牌
常見失敗包括保留 HTTP 前綴、選擇錯誤的點分隔欄位、複製過程中遺失尾隨字元以及使用需要填入的 Base64 實作。另一個陷阱是將整個令牌直接放在命令列上,進程清單或歷史記錄可能會保留它。
喜歡在適當控制下的標準輸入和臨時變量,並切勿為了方便而將生產令牌粘貼到聊天、票證或共享終端中。另請記住,第三段是二進位簽名材料,而不是 JSON,因此透過 jq 發送它應該會失敗,並不會告訴您任何有關簽名有效性的信息。
重點:相同的解碼,任何環境 - 當您有瀏覽器時,ToolAcre JWT 解碼器在本地執行此操作,無需上傳任何內容
shell 管道和 ToolAcre 在不同環境中執行相同的僅解碼序列:分割、標準化、填充、解碼 UTF-8 和解析 JSON。使用您可以檢查和控制的任何環境,預設使用非敏感資料。
兩條路徑都不會驗證真實性或授權呼叫者。讀取有效負載形狀後,請轉到服務的可信任驗證程式和日誌以進行加密和策略決策。產生漂亮的 JSON 的指令已經完成了格式化任務,而不是安全判斷。