JWT 解碼器/

你的數據是 100% 私密的 —— JWT 完全在你的設備上進行解碼和編碼。

JWT
已解碼標頭
已解碼有效載荷
公鑰

了解 JWT

關於 JWT 的所有信息以及在不同框架中驗證 JWT 的逐步指南。

什麼是 JWT?

JWT(JSON Web Token)是一種自我包含的無狀態令牌,以結構化且可讀的格式攜帶信息。無論你是在保護 API 還是採用應用程序的基於令牌的身份驗證,JWT 都是一個強大的工具,因為它們:

  • 無狀態: JWT 是自包含的,無需服務器端狀態驗證。JWT 可以通過簽名確保數據的完整性。
  • 跨服務兼容性: JWT 可以輕鬆在不同的服務間共享和驗證。
  • 可擴展: JWT 的有效載荷可以包含自定義的聲明,允許靈活的授權和信息共享。
了解更多

JWT 的結構

一個典型的 JWT 被分為三部分,每部分用 Base64URL 編碼並由句號(.)分隔:

  • 標頭 - 包含元數據,如簽名算法(例如,HS256 或 RS256)和令牌的類型(JWT)。
  • 有效載荷 - 包含實際數據,如用戶 ID、用戶配置文件、過期時間或範圍。
  • 簽名 - 標頭、有效載荷的哈希組合並使用密鑰加密。其目的是確保令牌的完整性並確認它未被篡改。

此結構使 JWT 能夠在各方之間提供一種緊湊且安全的信息傳輸方式。

jwt_structure

JWT 中常見的令牌聲明

聲明是有效載荷的一部分,並持有關鍵信息。以下是你的參考標準化註冊聲明:

聲明全名描述
iss發行者發行 JWT 的實體,如授權服務器。
sub主體標識 JWT 的主體,通常代表經過身份驗證的用戶。
aud觀眾指明哪些接收者可以接受和處理這個令牌。這可以是多個觀眾的值數組或單個接收者的單一值。
exp過期時間設置令牌過期時間,之後它就會失效。這有助於通過限制令牌的有效期來防止重播攻擊。
nbf在此之前無效使令牌僅在此時間戳之後有效。對於沒有可用時鐘的情況非常有用。
iat簽發時間令牌創建的時間。這可以用來確定令牌的年齡。
jtiJWT ID令牌的唯一識別符,用於防止同一令牌被多次使用(例如,在重播攻擊中)。

根據授權服務器的規範和配置,有可能在有效載荷中包含其他聲明以支持特定的用例。你還可以向 JWT 添加自定義聲明以滿足獨特的業務需求。

注意: 不要在 JWT 聲明中存儲私人或敏感信息。雖然 JWT 聲明是用 Base64URL 編碼的,但它們並未加密。這意味著任何擁有該令牌的人都可以解碼它並查看聲明,即使他們無法更改它而不使簽名無效。如果需要,使用加密或其他安全方法保護敏感數據。

什麼時候使用 JWT?

在以下情況下,JWT 可能特別有用:

  1. 微服務架構: 用於多個服務之間的無狀態身份驗證。
  2. 單點登錄 (SSO) 系統: 使用一次身份驗證即可訪問多個應用程序。
  3. 移動應用程序: 在 API 調用中有效地維持用戶會話。
  4. 高流量應用程序: 在高流量環境中減少數據庫負擔。
  5. 跨域資源共享 (CORS): 簡化多個域之間的身份驗證。
  6. 無服務器架構: 提供無狀態身份驗證,在服務器端會話較難以管理的情況下。
了解更多

如何驗證 JWT?

必須驗證 JWT 的完整性以確保其標頭和有效載荷未被篡改。以下是流行編程環境中驗證 JWT 的逐步示例:

使用 Logto Cloud 解鎖更多功能

簡化你的工作流程,並通過 Logto Cloud 確保用戶管理的安全。它基於 OpenID Connect (OIDC),利用 JWT 提供一個可靠的身份驗證和授權系統,設計用於滿足你的需求進行擴展。