使用步驟
- 貼上令牌,帶不帶「Bearer 」字首都可以,三段內容會用不同顏色標出。
- 檢視解碼後的頭部和載荷,iat、nbf、exp 會顯示為具體時間和相對時間。
- 校驗簽名:HS256/384/512 填寫共享金鑰,RS、PS、ES、EdDSA 貼上 PEM 或 JWK 格式的公鑰。
- 需要時複製解碼後的 JSON。
引數說明
- 頭部(Header)
- 令牌的後設資料,通常包含 alg(簽名演算法)和 typ。kid 欄位說明是用哪把金鑰簽名的。
- 載荷(Payload)
- 宣告內容。標準欄位有 sub(主體)、iss(簽發方)、aud(受眾)、iat(簽發時間)、nbf(生效時間)、exp(過期時間),時間都是 Unix 秒。
- 簽名
- 證明頭部和載荷沒有被篡改。校驗需要金鑰(HMAC)或簽發方的公鑰(RSA、ECDSA、EdDSA)。
- 金鑰是 Base64 編碼的
- 有些服務以 Base64 形式儲存 HMAC 金鑰,如果你拿到的是編碼後的字串就勾選此項。
常見欄位
| 欄位 | 含義 | 示例 |
|---|---|---|
sub |
令牌所屬主體(使用者 ID) | "1234567890" |
iss |
簽發方 | "https://accounts.example.com" |
aud |
接收方 | "my-api" |
exp |
過期時間(Unix 秒) | 1790427600 |
iat |
簽發時間(Unix 秒) | 1790424000 |
nbf |
生效時間(Unix 秒) | 1790424000 |
jti |
令牌唯一 ID,用於防重放 | "a1b2c3" |
示例
令牌 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c 解碼後頭部為 {"alg":"HS256","typ":"JWT"},載荷包含 sub、name 和 iat(2018 年 1 月 18 日)。使用金鑰 your-256-bit-secret 可以校驗通過。
常見問題
把生產環境的 JWT 貼上到這裡安全嗎?
令牌由瀏覽器裡的 JavaScript 解碼,不會上傳或記錄。但仍請像對待密碼一樣對待訪問令牌:在過期之前,持有有效令牌的人都能使用它。
能解碼出來就說明令牌是真的嗎?
不是。頭部和載荷只是 Base64URL 編碼,任何人都能讀取或偽造。只有用正確的金鑰校驗簽名通過,才能說明令牌確實由預期的一方簽發。
金鑰明明是對的,為什麼校驗失敗?
檢查金鑰是否是 Base64 編碼的、末尾有沒有多餘的空格或換行,以及頭部的演算法是否與簽發方一致。令牌哪怕改動一個字元,簽名也會失效。
alg 為 none 是什麼意思?
表示令牌聲稱沒有簽名。除非明確需要,服務端必須拒絕這類令牌,歷史上曾因為接受它導致過真實的認證繞過漏洞。
RS256 令牌的公鑰從哪裡獲取?
身份提供方通常在 /.well-known/jwks.json 公佈 JWKS 公鑰集合,找到 kid 與令牌頭部一致的那一把,以 JWK 格式貼上到這裡即可。
隱私說明
本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。