古詩詞大全網 - 藝術簽名 - 什麽是JWT

什麽是JWT

JSON Web Token(JWT)是壹個開放標準(RFC 7519),它定義了壹種緊湊且自包含的方式,用於在各方之間以JSON對象的形式安全地傳輸信息。此信息可以驗證和信任,因為它是數字簽名的。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公鑰/私鑰對進行簽名。

應用場景:

授權:這是使用JWT最常見的場景

信息交流:JSON Web令牌是在各方之間安全傳輸信息的好方法。

JSON Web令牌由三個部分組成,以點(?.?)分隔,它們是:

Header

Payload

Signature?簽名

JWT通常如下所示:

Header.Payload.Signature

Header:

通常由兩部分組成:令牌的類型(JWT)和使用的簽名算法(如HMAC SHA256或RSA)。

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

對這個JSON進行Base64Url編碼以形成JWT的第壹部分

Payload:

有效負載,其中包含聲明。聲明是關於實體(通常是用戶)和附加數據的語句。索賠分為三類:登記的、公開的和私人的債權。

{ ?"sub": "1234567890", ?"name": "John Doe", ?"admin": true}

對有效負載進行Base64Url編碼,以形成JSON Web令牌的第二部分。

Signature?簽名:

如果要使用HMAC SHA256算法,則將按以下方式創建簽名:

HMACSHA256(

?base64UrlEncode(header) + "." +

?base64UrlEncode(payload),

?secret)

參數說明:

HMACSHA256:使用SHA256是因為Header中alg:HS256,如果是alg:HS128,那就是HMACSHA28。

base64UrlEncode:Base64中用的三個字符是"+","/"和"=",由於在URL中有特殊含義,因此Base64URL中對他們做了替換:"="去掉,"+"用"-"替換,"/"用"_"替換,這就是Base64URL算法。

secret:服務器給的 key

Signature :最後將HMACSHA256後的值進行Base64URL後就是需要的簽名。

輸出是三個Base64-URL字符串,用點分隔,可以輕松地在HTML和HTTP環境中傳遞,與基於XML的標準(如SAML)相比更加緊湊。