權杖工作室
Privacy First檢查和產生 JWT/JWK/JWKS。
Header
Payload
Signature
什麼是 JWT?
JSON Web Token(JWT)是一種簡潔、URL 安全的格式,用於在雙方之間傳遞宣告。JWT 由三個以點分隔、經 Base64URL 編碼的部分組成:標頭(演算法與類型)、酬載(宣告)與簽章。簽章可確保權杖未遭竄改。JWT 常用於網頁 API 中的身份驗證與資訊交換。標準宣告包括 sub(主體)、iss(簽發者)、aud(受眾)、exp(到期時間)、nbf(不早於)、iat(簽發時間)與 jti(JWT ID)。
JWT 演算法
HS256/384/512 使用 HMAC 搭配 SHA-2 與共享密鑰——簡單,但雙方必須持有相同的金鑰。RS256/384/512 使用 RSA PKCS#1 v1.5 非對稱簽章——非常適合微服務架構,因為服務端只需要公鑰即可。ES256/384/512 使用 ECDSA 搭配 NIST 曲線,在相同安全性下簽章比 RSA 更小。PS256/384/512 使用 RSA-PSS,這是現代系統中優於 RS* 的機率性變體。
JWK 與 JWKS
JSON Web Key(JWK)是表示密碼學金鑰的 JSON 結構。JWK Set(JWKS)則是一種 JSON 結構,在 keys 屬性下包含一組 JWK 陣列。服務會在一個知名網址(例如 /.well-known/jwks.json)發佈其 JWKS,讓用戶端無需經由外部管道交換金鑰,即可取得公鑰以驗證 JWT。JWKS 中的金鑰透過其 kid(金鑰識別碼)識別,JWT 標頭會參照此識別碼。
安全性最佳實務
請務必在伺服器端驗證 exp、nbf、iss 與 aud 宣告。切勿在正式環境中使用 alg: none 演算法——這會移除所有簽章保護。當多個服務都需要驗證權杖時,建議優先使用非對稱演算法(RS*、ES*、PS*)而非 HMAC。請定期輪替金鑰,並使用 kid 識別每個權杖所使用的簽署金鑰。請安全地儲存私鑰——切勿將其提交至版本控制系統。建議使用較短的到期時間並搭配重新整理權杖,而非使用長效期的 JWT。