溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

服務(wù)安全之:JWT

發(fā)布時(shí)間:2020-07-07 00:17:27 來(lái)源:網(wǎng)絡(luò) 閱讀:201 作者:popgis 欄目:網(wǎng)絡(luò)安全

? ?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。示例如下:

?? ?服務(wù)安全之:JWT


? ? 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ò)以下的算法獲得簽名:

?? ?服務(wù)安全之:JWT


? ? 假定頭信息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/



向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI