Java JWT:Java的JSON Web令牌 學習與研究

Java的JSON Web令牌

一、什麼是JWT

JWT是一種以緊湊,可驗證的形式在兩方之間傳輸信息的方法
在JWT主體中編碼的信息位稱爲 claims。JWT的拓展形式爲 JSON格式,因此每個 claim 都是JSON 對象中的鍵
JWT 可以被加密簽名(使其成爲JWS)或被加密(使其成爲JWE)
這爲JWT的用戶增加了一層強大的可驗證性。接收者具有高度的信心,例如可以通過驗證簽名來篡改JWT。

二、JWT的組成形式

簽名的 JWT的緊湊形式是一個字符串,該字符串包含三個部分,每個部分中間都有一個 .

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2UifQ.ipevRNuRP6HflG8cFKnmUPtypruRC4fb1DWtoLL62SY

每個部分都是Base64URL 編碼 的。整體分爲三個部分:

  1. 標頭 :至少指定用於簽署 JWT的算法
  2. 正文:這個部分包含了此JWT的所有聲明
  3. 簽名 :通過標頭和正文的組合,通過標頭中指定的算法傳遞來計算的

如果將前兩部分通過基本的64位url解碼器傳遞,則會得到以下內容(爲清楚起見添加了格式):

header:

	{
	 	"alg":"HS256"
	}

body:

	{
	 	"sub":"Joe"
	}

在這種情況下,我們得到的信息是使用 SHA-256算法的HMAC被用來對 JWT進行簽名。而且,主體具有 sub價值的單一主張 Joe
要計算簽名,需要一個密鑰對其進行簽名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章