JWT 的結構詳解

2021-10-08 17:32:11 字數 1538 閱讀 1593

jwt:json web token 的縮寫

由三部分組成:header(頭部)、payload(負載)、signature(簽名)。

因此,jwt通常如下所示:

***xx.yyyyy.zzzzz

1 header(頭部)

由令牌的型別(即jwt)和正在使用過的簽名演算法組成。如:

那麼,這個json是base64url編碼成jwt的第一部分。

2 payload(負載)

payload是令牌jwt的第二部分。包含的是請求體和其它一些資料。

載荷的屬性有三類:

預定義(registered) 公有(public) 私有(private)

2.1 預定義的載荷

這裡面的前 7 個字段都是由官方所定義的,也就是預定義(registered claims)的,並不都是必需的。

iss (issuer):簽發人

sub (subject):主題

aud (audience):受眾

exp (expiration time):過期時間

nbf (not before):生效時間,在此之前是無效的

iat (issued at):簽發時間

jti (jwt id):編號

2.2 公有的載荷

在使用 jwt 時可以額外定義的載荷。為了避免衝突,應該使用 iana json web token registry 中定義好的,或者給額外載荷加上類似命名空間的唯一標識。

2.3 私有載荷

在資訊互動的雙方之間約定好的,既不是預定義載荷也不是公有載荷的一類載荷。這一類載荷可能會發生衝突,所以應該謹慎使用。

3 signature(簽名)

簽名屬於jwt的第三部分。主要是把頭部的base64urlencode與負載的base64urlencode拼接起來,再進行hmacsha256加密,加密結果再進行base64url加密,最終得到的結果作為簽名部分。

加密過程如下:

base64url(     

hmacsha256(       

base64urlencode(header) + "." + base64urlencode(payload),       

your-256-bit-secret (秘鑰加鹽)     

) )

如果乙個客戶端帶著jwt請求服務端,服務端要確保這個請求是合法並且沒有被篡改的請求,那麼服務端是需要乙個規則來進行驗證的。所以上述簽名的加密過程就是服務端的使用的規則,加密結果再和jwt的第三部分進行匹配,確定是否相同,如果相同則為合法請求。如果不相等,則為非法請求。

非法者非法請求的時候,可以通過同樣的規則來偽造乙個jwt,但是客戶端一般是不知道服務端的金鑰的(鹽),所以非法者幾乎不能偽造出合法的請求。

jwt 私鑰 JWT 開發設計詳解

什麼是 jwt jwt 全稱是 json web token jwt 是乙個 開放標準 rfc 7519 它定義了一種緊湊且自包含的方式,用於在各方之間作為 json 物件安全地傳輸資訊。由於此資訊是經過數字簽名的,因此可以被驗證和信任。可以使用金鑰 hmac演算法 或使用 rsa 或 ecdsa ...

常用的使用者認證方式 詳解JWT

和session的區別和優缺點 總結authentication 使用者認證,指的是驗證使用者的身份,例如你希望以小a的身份登入,那麼應用程式需要通過使用者名稱和密碼確認你真的是小a。由於http協議是無狀態的,每一次請求都無狀態。當乙個使用者通過使用者名稱和密碼登入了之後,他的下乙個請求不會攜帶任...

jwt使用小結 1 概念詳解

jwt 全稱 json web tokens 是乙個非常輕巧的規範。這個規範允許我們使用 jwt 在使用者和伺服器之間傳遞安全可靠的資訊.jwt 預設是不加密的,任何人都可以解密出來讀到,所以不要把秘密資訊放在裡面。它的兩大使用場景是 認證和資料交換 jwt由三部分組成 加粗樣式部分是乙個json物...