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 能讀出來,不能代替這些檢查。
| 情況 | 判讀與下一步 |
|---|---|
| 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}資料可信度