學習JSON Web Token(JWT)包含的內容、如何解析它以讀取負載,以及如何在不使用函式庫的情況下驗證其結構。
什麼是 JWT?
JSON Web Token(JWT)是一種緊湊、URL 安全的「身份憑證」格式,由 RFC 7519 標準化,已成為現代 API 與單一登入(SSO)流程的預設選擇。一個 JWT 是一串文字,內含一小段 JSON 資料與一份加密簽章——任何收到它的人都能讀到內容,但只有持有簽章金鑰的伺服器能產生有效的 JWT。這個特性讓它非常適合「無狀態」驗證:伺服器不必再維持 session,因為使用者身分、權限、到期時間都寫在 token 本身。
常見應用場景
API 身份驗證
使用者登入一次後取得 JWT,之後每次請求都在 Authorization: Bearer 標頭帶上此 token。API 驗證簽章後即可信任其中的身份與權限,不必再查資料庫。
單一登入(SSO)
OpenID Connect 建立在 JWT 之上:身份提供者發出 ID Token 描述使用者,各下游應用透過公開的 JWKS 端點驗證簽章即可共享登入。
短期一次性授權
密碼重設連結、Email 驗證連結、簽章下載 URL 都很適合用 JWT。只要在 exp 欄位設到期時間,連結過期後自動失效。
步驟指南
了解JWT結構
JWT由三個以點分隔的Base64URL編碼部分組成:標頭.負載.簽名。標頭指定演算法,負載包含聲明(資料),簽名用於驗證完整性。
解析標頭
取第一部分(第一個點之前),進行Base64URL解碼。您將得到一個JSON物件,例如:{"alg":"HS256","typ":"JWT"}。這告訴您使用的簽名演算法。
解析負載
取第二部分進行Base64URL解碼。您將看到聲明,例如:sub(主題/用戶ID)、exp(過期Unix時間戳)、iat(發行時間)、iss(發行者)和自定義聲明。
檢查過期時間
exp聲明是Unix時間戳。與當前時間比較以查看token是否仍然有效。例如:exp: 1700000000 = 2023年11月14日 22:13 UTC。
使用JWT解析工具
將您的JWT貼入JWT解析工具。它立即以格式化JSON顯示解碼後的標頭、負載和簽名部分——無需伺服器,一切在您的瀏覽器中運行。
使用免費工具
JWT 解析工具
常見問題
Q: 在瀏覽器中解析JWT安全嗎?
A: 安全——解碼(讀取負載)是安全的。JWT是Base64URL編碼,不是加密的。切勿將您的JWT分享給不信任的第三方網站,因為token會授予存取權限。
Q: 沒有密鑰可以驗證JWT簽名嗎?
A: 不行。簽名驗證需要密鑰(用於HMAC)或公鑰(用於RSA/ECDSA)。我們的解析器顯示結構,但沒有密鑰就無法驗證簽名。
Q: 「JWT已過期」是什麼意思?
A: 這表示exp時間戳已在過去。伺服器會拒絕過期的token。您需要重新整理或重新驗證以獲取新token。