精簡的 JWT(JSON Web Token,JSON 網頁權杖)是一個由三個部分組成的字串——標頭(header)、酬載(payload)和簽章(signature)——以小數點分隔。若想在不撰寫程式碼的情況下解碼,請將權杖貼到瀏覽器型的 JWT 解碼器中。該工具會在本地端解析經 Base64Url 編碼的標頭與酬載,並立即顯示其 JSON 內容。由於簽章絕不會在瀏覽器中進行驗證,解碼後的輸出會被標示為「未驗證」,僅供除錯或檢查之用。當涉及信任問題時,請務必在擁有該權杖的應用程式中,使用正確的密鑰或公鑰來驗證。
開發人員與資安團隊在 API 開發、疑難排解或稽核期間,經常需要檢查 JWT。與其安裝程式庫或撰寫腳本,瀏覽器型的解碼器能提供即時的可視性。例如,您可能從 OAuth 流程中收到一個權杖,並希望在將其用於前端應用程式之前,先確認其聲明(claims)。JWT 解碼器讓您可以貼上權杖、查看解碼後的標頭與酬載,並驗證權杖的結構——全部都能在不離開瀏覽器分頁的情況下完成。

何時使用 JWT 解碼器
當您需要快速檢查權杖的內容時,請使用 JWT 解碼器,例如:
- 除錯 API 回應中的身分驗證錯誤。
- 驗證儲存在本地端儲存空間(local storage)或 cookies 中的權杖之聲明(例如
exp、iss、sub)。 - 透過檢查權杖的標頭演算法與酬載資料,來疑難排解 OAuth 或 OpenID Connect 流程。
- 在資安稽核或滲透測試期間審查權杖。
該工具無法取代正確的權杖驗證。在依據權杖的聲明採取行動之前,請務必在後端或受信任的環境中驗證簽章。
JWT 解碼的運作原理
一個 JWT 由三個以 Base64Url 編碼的區段組成:
- 標頭(Header):包含權杖類型(
JWT)與簽章演算法(例如HS256、RS256)。 - 酬載(Payload):包含聲明——關於該實體的陳述(例如使用者 ID、到期時間)以及其他中繼資料。
- 簽章(Signature):透過結合標頭、酬載以及密鑰或私密金鑰所產生的密碼學簽章。
若要解碼權杖,JWT 解碼器會在小數點處分割字串,將前兩個區段從 Base64Url 轉換為 JSON 並顯示出來。由於驗證簽章需要原始的密鑰或公鑰,而這在瀏覽器中無法取得,因此簽章會被忽略。這就是為什麼該工具會將輸出標示為「未驗證」。
在瀏覽器中解碼 JWT
- 複製精簡的 JWT(例如
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c)。 - 在瀏覽器中開啟 JWT 解碼器。
- 將權杖貼到輸入欄位中。
- 點擊 Decode JWT 以查看解碼後的標頭與酬載。
- 檢視輸出結果,並注意「未驗證」的警告。標頭與酬載會以格式化的 JSON 顯示,方便閱讀。
範例:解碼一個範例 JWT
請參考以下範例權杖:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
當貼到 JWT 解碼器後,該工具會輸出:
| 區段 | 解碼後的內容 |
|---|---|
| 標頭 | {
"alg": "HS256",
"typ": "JWT"
} |
| 酬載 | {
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
} |
簽章(SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c)不會被解碼或驗證。若要確認權杖的完整性,請在您的應用程式中,使用對應於 HS256 演算法的密鑰來進行驗證。
JWT 解碼的常見使用情境
以下是解碼 JWT 有所幫助的幾種情境:
| 情境 | 為何要解碼? |
|---|---|
| API 除錯 | 檢查身分驗證端點所回傳的權杖,以驗證諸如 exp(到期時間)或 aud(接收者)等聲明。 |
| 前端開發 | 檢查儲存在本地端儲存空間或 cookies 中的權杖,確保其包含預期的使用者資料。 |
| 資安稽核 | 審查權杖中是否有敏感資料或設定錯誤的聲明(例如過於寬鬆的角色權限)。 |
| OAuth/OIDC 流程 | 透過確認權杖的結構與聲明,來疑難排解身分識別提供者(identity provider)的回應。 |
在所有情況下,請記住解碼後的輸出是未經驗證的。請將其視為除錯輔助工具,而非可信的資料來源。
瀏覽器型解碼的替代方案
如果您偏好透過程式方式來解碼 JWT,有以下幾個程式庫可供使用:
- JavaScript:使用 jwt-decode(一個用於在瀏覽器中解碼權杖的輕量級程式庫)。
- Python:使用
PyJWT程式庫(jwt.decode(token, options={"verify_signature": False}))。 - Java:使用 Auth0 的
java-jwt(JWT.decode(token))。 - Go:使用
github.com/golang-jwt/jwt套件(token, _ := jwt.Parse(tokenString, nil))。
這些程式庫提供更高的控制彈性,但需要撰寫程式碼。對於快速的檢查工作,JWT 解碼器 速度更快、使用也更為便利。
安全性考量
在解碼 JWT 時,請將以下安全性實務謹記在心:
- 絕不信任未經驗證的權杖:JWT 解碼器不會驗證簽章。在使用權杖的聲明之前,請務必在後端進行驗證。
- 避免在共用環境中解碼敏感的權杖:若您處理的權杖包含個資(PII)或機密資料,請在安全、私密的環境中進行解碼。
- 檢查是否有弱式演算法:若標頭顯示
alg: "none"或不安全的演算法(例如使用弱密鑰的HS256),請將該權杖視為不可信。 - 驗證到期時間與接收者:即使權杖已通過驗證,也請確保
exp(到期時間)與aud(接收者)等聲明符合您的使用情境。
若要了解更多關於 JWT 安全性的資訊,請參閱 RFC 7519 規範。
疑難排解解碼錯誤
若 JWT 解碼器無法解碼您的權杖,請檢查以下常見問題:
- 權杖格式錯誤:請確保權杖中恰好有兩個小數點(例如
header.payload.signature)。多出或缺少小數點都會導致錯誤。 - Base64Url 編碼無效:標頭與酬載必須是有效的 Base64Url 字串。如果您曾手動編輯過權杖,請重新進行正確的編碼。
- 空白區段:像
header..signature(缺少酬載)這樣的權杖是無效的。 - 非 JWT 輸入:該工具僅適用於 JWT。若您貼上的是其他格式(例如 session cookie),解碼將會失敗。
如果您不確定權杖的結構,可以使用 JSON 驗證器 來檢查解碼後的區段是否有語法錯誤。
將 JWT 解碼整合進您的工作流程
以下說明如何將 JWT 解碼器融入您的開發流程:
- 在 API 開發期間:使用該工具檢查身分驗證端點所回傳的權杖。驗證聲明是否符合您的預期(例如正確的使用者 ID、角色權限與到期時間)。
- 在前端除錯時:在建立一個將權杖儲存在本地端儲存空間的前端應用程式時,請先解碼權杖以確認其內容,再將其用於 API 呼叫。
- 用於安全性審查:在程式碼審查或資安稽核期間,解碼權杖以檢查是否有設定錯誤(例如缺少
exp聲明或角色權限過於寬鬆)。 - 在 CI/CD 管道中:雖然 JWT 解碼器是瀏覽器型的工具,但您可以使用諸如
PyJWT或java-jwt等程式庫,在 CI/CD 管道中自動化權杖驗證作業。
若要進一步了解 API 除錯,請閱讀我們的指南:如何格式化 JSON 以提升可讀性與除錯效率。
若要深入了解,請參閱 如何將 ASCII 碼用於程式設計與資料處理工作。
若要深入了解,請參閱 如何在瀏覽器中移除文字的開頭 BOM。
若要深入了解,請參閱 在瀏覽器中將 Cookie 標頭轉換為 JSON 以及反向轉換。