您好,登錄后才能下訂單哦!
? ?JWT是JSON Web Tokens的縮寫(xiě)。既然叫JSON Web Tokens,所以JWT Tokens中真正包含的是多個(gè)JSON對(duì)象。為什么是多個(gè)JSON對(duì)象呢?因?yàn)镾WT Token實(shí)際上是由三部分組成,其中有兩部分是JSON格式。這三部分即頭(Header)、負(fù)載數(shù)據(jù)(Payload)、簽名(Signature)。
?? ?
? ? 1、信息頭(Header)
? ? 頭信息包含兩部分,一部分表示Token的類(lèi)型,對(duì)于JWT來(lái)說(shuō),值為JWT;另一部分表示簽名算法,如,HMAC、SHA256、RSA。示例如下:
?? ?
? ? 2、負(fù)載信息(Payload)
? ? 負(fù)載信息是對(duì)實(shí)體與附加信息的說(shuō)明。包含注冊(cè)聲明、公開(kāi)聲明、私有聲明三部分。詳情請(qǐng)參考:https://tools.ietf.org/html/rfc7519#section-4.2
? ? 3、簽名(Signature)
? ? 通過(guò)指定的算法將頭、負(fù)載、密碼信息作為輸入條件,計(jì)算而得的一個(gè)字符串。
? ? 這三部分信息不是原文傳輸?shù)摹T趥鬏斠郧?,先要進(jìn)行轉(zhuǎn)碼壓縮。這樣做一是為了使傳輸?shù)膖oken數(shù)據(jù)體積小,減少數(shù)據(jù)傳輸?shù)呢?fù)擔(dān),二是為了使數(shù)據(jù)更安全。JWT Token一般可以采用HMAC算法使用密碼進(jìn)行轉(zhuǎn)碼壓縮,或采用RSA或ECDSA使用公鑰/私鑰對(duì)進(jìn)行轉(zhuǎn)碼。這兩種算法均具有數(shù)字簽名的作用,從而能夠保證數(shù)據(jù)的完整性,防止數(shù)據(jù)被第三方篡改。
?? ?
? ? JSON格式的頭信息和負(fù)載信息一般先要進(jìn)行Base64編碼轉(zhuǎn)化。然后通過(guò)以下的算法獲得簽名:
?? ?
? ? 假定頭信息Base64編碼轉(zhuǎn)化后的字符用h表示,Base64編碼轉(zhuǎn)化后的負(fù)載數(shù)據(jù)信息用p表示,簽名值用s表示,則JWT Token顯示為一串用逗號(hào)分隔的字符串,一般有如下的形式:
? ??
hhhhh.ppppp.sssss
? ?
????JWT最常用的應(yīng)用場(chǎng)景是為用戶(hù)授權(quán)。用戶(hù)在登錄時(shí),從授權(quán)服務(wù)器拿到JWT Token,后續(xù)的用戶(hù)請(qǐng)求只要攜帶此Token請(qǐng)求相應(yīng)的資源或服務(wù)即可。服務(wù)端會(huì)在拿到用戶(hù)傳的Token后,進(jìn)行合法性驗(yàn)證。
? ? JWT另一個(gè)用途就是進(jìn)行信息交換。由于JWT Token既可以用于承載數(shù)據(jù),又是經(jīng)過(guò)簽名的,所以,既可以包含更多的應(yīng)用相關(guān)信息,又可以保證數(shù)據(jù)的安全性,防止數(shù)據(jù)被攔截后修改。
? ? 更詳細(xì)的介紹,請(qǐng)參考官方說(shuō)明:https://jwt.io/introduction/
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。