0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
設定
使用 HS256、HS384、HS512、RS256 和 RS512 算法生成和解密 JSON Web Token (JWT)。在 生成 模式下,填寫 JSON 載荷和秘密金鑰以建立權杖。在 讀取 模式下,貼上現有權杖以檢查其標頭、載荷並驗證簽章。

HMAC 與 SHA-256。共用對稱金鑰。建議用於一般用途。

密碼
入口

運作方式

JSON Web Token(JWT)是一種精簡的已簽署權杖,在兩方之間傳遞資訊(宣告)。它由用點分隔的三部分組成——標頭、酬載和簽章——,每部分都以 Base64URL 編碼。

在產生模式下,你用 JSON 定義標頭和酬載,並用密鑰(HMAC)或私鑰(RSA/ECDSA)簽署。在讀取模式下,你貼上現有權杖以檢查其內容並驗證簽章。

酬載未加密:任何人都能透過解碼 Base64URL 讀取它。簽章僅保證權杖未被更改,並不會隱藏它。切勿在 JWT 中放置敏感資料。

範例

header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
tokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c簽章(第三部分)取決於演算法和密鑰;此範例使用 HS256 和密鑰 "your-256-bit-secret"。

使用情境

  • 在 API 中認證使用者:伺服器簽發已簽署的權杖,並在每個請求中驗證它,而無需儲存工作階段。
  • 檢查和除錯認證權杖,查看其宣告(sub、exp、角色)和日期。
  • 用密鑰或公鑰驗證權杖的簽章,以確認它未被竄改。
  • 在開發認證流程時,使用不同演算法(HMAC、RSA、ECDSA)產生測試權杖。

常見問題

JWT 的內容是加密的嗎?

不是。標頭和酬載只是經過 Base64URL 編碼,任何人都能解碼。簽章保證的是完整性(未被更改),而非機密性。

HS256 和 RS256 有什麼區別?

HS256 使用單一共享密鑰進行簽署和驗證(HMAC)。RS256 是非對稱的:用私鑰簽署、用公鑰驗證,適合許多服務需要驗證但無需簽發的情境。

iat、exp 和 nbf 宣告是什麼意思?

它們是標準時間戳:iat(簽發時間)、exp(過期時間)和 nbf(在此之前無效)。以自 1970 年起的秒數表示(Unix 紀元)。

為什麼不建議使用 "none" 演算法?

因為它會產生未簽署的權杖:任何人都可以修改酬載,而權杖仍會被接受。它只適合測試,絕不能用於生產環境。

我的權杖會傳送到伺服器嗎?

不會。產生、解碼和驗證全部在你的瀏覽器中完成;權杖和密鑰絕不會離開你的裝置。