Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

这是AI翻译的帖子。

Seize the day

什麼是 JWT (JSON Web Token)?

  • 写作语言: 韓国語
  • 基准国家: 所有国家 country-flag

选择语言

  • 汉语
  • English
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

durumis AI 总结的文章

  • JSON Web Token (JWT) 是一種用於安全傳輸資訊的加密 Token。
  • JWT 由標頭、載荷和簽章組成,簽章確保資料的完整性。
  • JWT 不需要管理狀態資訊,因此在分散式環境中具有高度可擴展性。

什麼是 JWT?

JSON Web Token(JWT) 是一種將資訊安全傳輸至 JSON 物件的方法,是一種公開的標準 (RFC 7519)。 顧名思義,將所需的資訊儲存在 token 中,並進行加密使用。


JWT 強調為簽署過的 token (signed token)。當使用公開/私鑰對進行簽署時,此簽署保證只有持有私鑰的當事人才能簽署該 token。也就是說,持有該金鑰的伺服器可以知道此 token 是否正常。


JWT 结构

JWT 由標頭 (Header)、有效載荷 (Payload) 和簽章 (Signature) 組成。

每個部分都使用 Base64 編碼,並使用點 (.) 作為分隔符。

標頭

{
    "alg": "HS256",
    "typ": "JWT"

標頭包含兩個主要資訊。token 的類型 (typ) 和使用的簽章演算法 (alg)。簽章演算法用於生成和驗證簽章。

typ 被指定為 "JWT",而 alg 為 HMAC、SHA256 等。如上所示,表示使用私鑰使用 HS256 演算法。

有效載荷

{
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022


有效載荷包含要傳遞到 token 的宣告。使用者識別資訊或 token 的屬性以鍵值對的形式儲存。也就是說,開發人員可以隨意新增!

標準規範將鍵的名稱定義為簡潔的 3 個字母。

註冊的宣告如下。

  • iss (Issuer) : 產生 token 的主體(包含產生 token 的主體的唯一識別資訊)
  • sub (Subject) : token 的目標主體
  • aud (Audience) : token 的接收者
  • exp (Expiration Time) : token 的有效期限(超過此時間,token 將不再有效)
  • nbf (Not Before) : token 的啟用日期(在此時間之前,無法使用 token)
  • iat (Issued At) : token 的產生時間
  • jti (JWT Id) : JWT token 識別碼(當有多個產生者時,用於區分這些產生者)


如果有其他需要的值,可以新增並使用。

但是,有效載荷不是加密的簽署值,因此不會包含敏感資訊。

解碼後,任何人都可以查看。jwt.io 可以在該網站上立即查看。

簽章

HMACSHA256(
    base64UrlEncode(header) + "." +
    base64UrlEncode(payload),
    your-256-bit-secret

使用 base64 編碼的標頭和有效載荷的值,使用分隔符點 (.) 連接,並使用 your-256-bit-secret 伺服器持有的私鑰進行簽署。

因此,只有發佈 token 的伺服器可以使用私鑰解密簽章 (Signature)。

考慮到解密,可以使用私鑰解密簽章,然後檢查 base64UrlEncode(header) 是否與 JWT 的 heaer 值匹配,base64UrlEncode(payload) 是否與 JWT 的 heaer 值匹配。

除了簽章之外,標頭和有效載荷只進行了編碼,因此可以查看正文的資訊,但簽章可以確保資訊的完整性和安全性。



JWT 自身包含所有必要的資訊,是自包含的,為了彌補需要狀態的會話的缺點而創建的 JWT 不需要單獨的儲存庫。

伺服器端無需維護會話,無狀態,因此在分散式系統或微服務架構中的可擴展性很高。

簽章,數位簽章可以保護資訊,保證資料的完整性。

nofunfromdev
Seize the day
Seize the day
nofunfromdev
[Effective Java] 項目 6. 避免不必要的物件建立 這是一份關於在 Java 中減少不必要物件建立的指南。對於 String、Boolean 等不變物件,最好使用字面值;對於正規表示式,最好快取 Pattern 物件。此外,自動裝箱會導致效能下降,因此最好使用基本類型。有關更多資訊,請參閱「Effective Java」。
제이온
제이온
제이온
제이온

2024年4月28日

概念性數據模型 概念性數據模型是將實體分離並使用 ERD 表示實體間關係的過程。實體是獨立的資訊單位,屬性是 實體擁有的數據。識別碼用於唯一識別實體,關係表示實體間的交互作用。基數性表示實體間的數量關係,可選性表示數據的必需性。
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

2024年4月8日

[Spring] Filter、Interceptor、Argument Resolver 是什麼? 深入了解 Spring Web 應用程式中處理請求的 Filter、Interceptor、Argument Resolver 的概念和差異。 比較分析各功能的實現方式、使用時機、優缺點,並透過實際範例程式碼幫助理解。 此外,還提供有關 Filter、Interceptor、Argument Resolver 的預期面試問題和答案。
제이온
제이온
제이온
제이온
제이온

2024年4月27日

在職證明書免費樣式 這是用於公司在職證明的在職證明書樣式。它是用 Google 文件撰寫的,方便編輯和分享,輸入公司資訊和個人資訊後, 列印並蓋章即可。請從 Google Drive 連結下載樣式。
여행가고싶은블로거지만여행에대해다루진않을수있어요
여행가고싶은블로거지만여행에대해다루진않을수있어요
寫著在職證明書樣式的圖片
여행가고싶은블로거지만여행에대해다루진않을수있어요
여행가고싶은블로거지만여행에대해다루진않을수있어요

2024年3月8日

[Javascript] 物件的結構 (V8) JavaScript 的 Object 在 V8 引擎中根據狀態可以被優化為類似結構體的 Fast 模式或以雜湊表運作的 Dictionary 模式。Fast 模式是針對幾乎固定形式的鍵和值進行優化,速度很快,但當新增新鍵或刪除元素等操作時, 會轉換為 Dictionary 模式,速度會變慢。
곽경직
곽경직
곽경직
곽경직
곽경직

2024年3月18日

[Java] 反射概念及使用方法 反射是 Java 程式執行時,能夠存取類別資訊並操作類別的 API。它允許在執行時建立類別實例,存取欄位和方法,但可能破壞封裝性並降低效能,因此應謹慎使用。在 Spring 框架等需要動態建立和管理物件的場合,它非常有用。
제이온
제이온
제이온
제이온

2024年4月25日