JWT 解碼:讀取標頭、Payload 與到期時間
這個工具會把 JSON 網路權杖 拆成標頭與 Payload,貼上後立刻以縮排的 JSON 顯示,做 JWT 解碼不需要任何密鑰。exp 等時間戳記旁邊會附上好讀的本地日期,並用標籤告訴你 Token 是否已過期。簽章驗證是選用的。Token 只在你的瀏覽器裡讀取,不會上傳。
JWT decode online:貼上就能解碼
- 把 Token 貼到 JSON 網路權杖 欄位。標頭和 Payload 會立刻出現,沒有需要按的解碼按鈕。
- 查看結果上方的狀態標籤:Token 是否已過期、尚未生效或沒有到期時間,以及簽章的狀態。
- 選取複製標頭或複製 Payload,就能把該區塊複製成純 JSON。日期註記不會包含在複製內容裡。
- 選取清除,就能清空欄位,改貼另一個 Token。
Token 可以照原樣貼上:開頭的 Authorization: Bearer、前後的引號和換行都會自動移除,所以從請求標頭、記錄檔的一行或 JSON 回應直接複製也行。欄位最多接受 100,000 個字元。claim 裡的大數字和各種語言的文字都會原樣顯示,過長的值會自動換行。
JWT Token 解析:標頭與 Payload 有什麼
JWT 由三段以點相連的 base64url 組成:header.payload.signature。前兩段只是編碼過的 JSON,所以不需要任何密鑰就能讀到內容。最常見的 claim 有:
iss:發行者,誰建立了這個 Tokensub:主體,這個 Token 是關於誰的aud:受眾,這個 Token 是給誰用的exp:到期時間nbf:在這個時間之前無效iat:發行時間jti:Token 的唯一 ID
標頭通常包含 alg(簽署演算法)、typ,有時還有 kid,也就是用來簽署的金鑰 ID。
看 Token 何時到期:exp 怎麼讀
exp、iat、nbf 和 auth_time 都是以秒為單位的 Unix 時間戳記。工具會在數字旁寫出對應的本地日期與時間,你不必自己換算。結果上方的標籤是以你裝置的時鐘為準:
- 依據
expclaim,顯示 Token 已經過期多久,或還能用多久。 - 沒有
exp時,會顯示沒有到期時間:這個 Token 沒有 exp 宣告。 nbf如果還在未來,Token 會被標示為尚未生效。
驗證簽章:使用密鑰或公開金鑰
解碼只能看出 Token 寫了什麼,只有簽章能證明內容沒有被改過。結果下方有驗證簽章(選用)。演算法可以維持自動偵測(會從 Token 讀取 alg),也可以自己選:HS256、HS384、HS512、RS256、RS384、RS512、PS256、PS384、PS512、ES256、ES384、ES512 或 EdDSA。接著在密鑰或公開金鑰欄位貼上金鑰:
- HS 演算法用的一般密鑰,會照你輸入的內容使用,不會先做 base64 解碼
- PEM 公開金鑰(
-----BEGIN PUBLIC KEY-----),或 PKCS#1 格式的 RSA 公開金鑰 - X.509 憑證
- JWK 或整份 JWKS,這時會依 Token 的
kid挑選金鑰
標籤會變成簽章有效或簽章無效。沒有金鑰時,標籤維持簽章尚未驗證。alg 為 none 的 Token 會顯示沒有簽章:這個 Token 未簽署。如果你貼上私密金鑰,工具會拒絕並請你改貼公開金鑰,驗證只需要公開金鑰。檢查使用瀏覽器內建的 WebCrypto,EdDSA 需要較新的瀏覽器。
Token 無法解碼時
錯誤訊息會出現在欄位下方,並指出有問題的部分:
- 文字不是由兩個點分隔的三段,訊息會說明找到幾段。
- 標頭、Payload 或簽章不是有效的 base64url,常見原因是複製時掉了一個字元。
- 標頭或 Payload 不是有效的 UTF-8 文字,或不是有效的 JSON。
- 有五段的 Token 是加密的 JWE。工具會辨識並說明,但沒有私密金鑰就讀不了。
在這裡貼上 Token 安全嗎?
Token 和任何金鑰都是在你的裝置上解碼與檢查,不會上傳,也不會儲存,更不需要帳號。不過,使用中的存取 Token 就是一種憑證,所以盡量使用已過期或測試用的 Token。
這個工具只會讀取並檢查 Token,不能建立或簽署 JWT,也不能解密 JWE。
常見問題
沒有密鑰也能解碼 JWT 嗎?
可以。JWT 的標頭和 Payload 只是用 base64url 編碼,並沒有加密,所以拿到 Token 的人都讀得到。貼到「JSON 網路權杖」欄位,兩者就會立刻出現。只有檢查簽章時才需要密鑰或公開金鑰,而這裡簽章驗證是選用的。
怎麼知道 JWT 是否已經過期?
貼上 Token,看結果上方的標籤。它會依據 exp claim 顯示 Token 已經過期多久,或還剩多少時間。沒有 exp claim 的 Token 會顯示「沒有到期時間:這個 Token 沒有 exp 宣告」,nbf 還在未來的話,標籤會說明 Token 尚未生效。
怎麼把 JWT 的 exp 數值換成日期?
不需要換算。exp 是以秒為單位的 Unix 時間戳記,工具會在「Payload」區塊的數字旁寫出對應的本地日期與時間。iat、nbf 和 auth_time 也一樣。
怎麼用公開金鑰驗證簽章?
在「驗證簽章(選用)」裡,讓「演算法」維持自動偵測,或選擇 Token 使用的演算法,再把公開金鑰貼到「密鑰或公開金鑰」。PEM 金鑰(-----BEGIN PUBLIC KEY-----)、RSA PUBLIC KEY、X.509 憑證、JWK 或 JWKS 都可以。之後標籤會變成「簽章有效」或「簽章無效」。
可以在本機做 JWT Token 解碼,不傳到伺服器嗎?
可以,這個工具就是這樣運作。Token 的拆分、解碼和檢查都在你的瀏覽器裡完成,不會上傳或儲存。簽章檢查使用瀏覽器內建的 WebCrypto,所以 Token 和金鑰都不會傳到任何地方。
JWT 的標頭和 Payload 裡有什麼?
標頭描述 Token 本身,通常有簽署演算法(alg)、類型(typ),有時還有金鑰 ID(kid)。Payload 則是 claim,例如誰發行的(iss)、關於誰(sub)、給誰用(aud)以及何時到期(exp)。兩者都是純 JSON,顯示在「標頭」和「Payload」區塊。
JWT 的 alg none 是什麼意思?
意思是 Token 自己宣告沒有簽署:簽章部分是空的,沒有東西可以檢查。工具會顯示「沒有簽章:這個 Token 未簽署」。伺服器絕對不該把這種 Token 當成身分證明。
Bearer Token 要怎麼讀取內容?
如果它是 JWT,照原樣貼上就好。開頭的 Authorization: Bearer、引號和換行都會自動移除,所以可以直接從請求標頭或記錄檔複製。不是三段以點分隔的不透明 Bearer Token 無法解碼,工具會說明找到幾段。
可以在這裡解密 JWE,或建立並簽署 JWT 嗎?
不行。有五段的 Token 是 JWE,內容已加密,沒有私密金鑰就讀不了;工具會辨識並說明,而不是顯示錯誤。它也不會產生、簽署或編輯 Token,只負責讀取與檢查。