JWT 安全

檢視 JWT claims,但不要把它當成證明

整合失敗時,JWT 解碼很有用;但在接收系統驗證 issuer、audience、時間 claims 與簽章前,解出的 payload 只是文字。

內容更新: · 維護者與修正回報

判讀被拒絕的測試 Token

下方範例的 exp: 1735689600 對應 2025-01-01T00:00:00.000Z。依 exp 規則,時間恰好到達該點即已到期;接收端另行允許的時鐘誤差除外。使用時間戳工具時,請以秒輸入 1735689600;只有交給採毫秒的 API 時才乘以 1,000。

若尚未到期的測試 token 仍被 API 拒絕,請確認 aud 對應目標 API,並精確比對 iss 與設定的簽發者。再查驗證端紀錄,確認簽章及允許演算法。Payload 能讀出來,不能代替這些檢查。

判讀被拒絕的測試 Token
情況判讀與下一步
exp目前時間必須早於到期時間,另依驗證端明訂的誤差政策處理。
nbf即使 exp 尚未到期,未到 nbf 指定時間仍可能被拒絕。
iat簽發時間描述何時核發,不能代替 exp。

用本機檢視協助診斷

將非正式環境 token 的 header 與 claims 對照整合 contract。常見檢查包括預期 issuer、audience、到期時間單位,以及必要 claim 是否存在。

重現時間檢查

NumericDate 是 Unix epoch 起算的秒數。判定 clock skew 前先換算原始數值;把毫秒當成秒是常見整合錯誤。

不要貼上正式 bearer token

使用本機或可拋棄測試帳號簽發的 token。解碼不會驗證簽章,檢視器更不能變成授權判斷或分享憑證的地方。

{"iss":"https://issuer.example","aud":"web","exp":1735689600}

資料可信度

資料來源