JWT產生器
使用自訂標頭、載荷和金鑰產生簽名JWT令牌。支援HS256、RS256、ES256等演算法。
什麼是JWT?
JWT(JSON Web令牌,RFC 7519)是一種開放標準,用於在各方之間以緊湊的JSON物件形式安全傳輸資訊。由三部分組成:Header.Payload.Signature,以點號分隔。
JWT有哪些常見用途?
JWT廣泛用於身份認證(單一登入)、API授權和安全資訊交換。使用者登入後,伺服器簽發JWT,客戶端在後續請求中攜帶該令牌以證明身份。
HS256、RS256和ES256該怎麼選?
HS256使用共享金鑰,速度最快,適合單服務應用。RS256使用RSA金鑰對,適合多服務架構。ES256使用橢圓曲線金鑰,安全性高且簽名更短。
JWT的Claims是什麼?
Claims是載荷中的聲明資訊。註冊聲明包括iss(簽發者)、sub(主題)、exp(過期時間)、aud(接收方)。公共聲明可在IANA註冊。私有聲明是雙方約定的自訂欄位。
如何驗證JWT?
先解碼頭部獲取演算法,然後使用對應的金鑰(HMAC用共享金鑰,RSA/ECDSA用公鑰)驗證簽名。還需檢查exp、iss、aud等聲明是否有效。
在瀏覽器中產生JWT安全嗎?
安全,此工具使用Web Crypto API進行所有加密操作。金鑰和令牌不會離開瀏覽器,不會傳送到任何伺服器。
編碼和簽名有什麼區別?
編碼(Base64)只是將資料轉換為可傳輸格式,任何人都可解碼。簽名則建立密碼學雜湊,證明令牌未被篡改,且只有持有正確金鑰才能驗證。
JWT可以加密嗎?
可以,JWE(JSON Web加密)對載荷內容加密,沒有解密密鑰就無法讀取。標準JWT(JWS)只保證完整性,載荷內容對持有令牌的人是可讀的。
JWT有哪些安全最佳實踐?
始終設定較短的過期時間。HMAC使用強隨機金鑰。RSA/ECDSA妥善保管私鑰。不要在載荷中放敏感資料,因為只是Base64編碼。生產環境務必使用HTTPS。
JWT和Session認證有什麼區別?
JWT是無狀態的,伺服器不儲存會話資料,適合微服務和跨域場景。Session需要服務端儲存但可即時撤銷。JWT撤銷需要額外機制如黑名單。
JWT適合做登出和會話管理嗎?
JWT天生無狀態,服務端登出需要額外措施如令牌黑名單,或使用短過期時間配合刷新令牌。建議使用短生命週期的存取令牌(如15分鐘)配合較長的刷新令牌。
刷新令牌機制是如何運作的?
使用短生命週期的存取令牌(JWT)進行API呼叫,使用較長生命週期的刷新令牌獲取新的存取令牌。當存取令牌過期時,客戶端傳送刷新令牌獲取新JWT,無需重新登入。
什麼是「none」演算法?
「none」演算法表示JWT未簽名,不進行簽名驗證。僅應用於測試,未簽名令牌可被任意篡改。許多庫出於安全考慮預設禁用此演算法。
JWT有大小限制嗎?
JWT沒有固定大小限制,但由於通常透過HTTP頭部(Authorization)傳送,應控制在4KB以內。載荷應盡量精簡,只包含必要的聲明。