JWT

JWT(JSON Web Token)是一個開放的行業(yè)標準,它定義了一種簡潔的,自包含的協(xié)議格式,用于在通信雙方傳遞json對象,傳遞的信息經(jīng)過數(shù)字簽名可以被驗證和信任。JWT可以使用HMAC算法或使用RSA的公鑰/私鑰對來簽名,防止被篡改

JWT令牌的優(yōu)點

1.JWT基于json,非常方便解析

2.可以在令牌中自定義豐富的內(nèi)容,易于擴展

3.通過非對稱加密算法及數(shù)字簽名技術(shù),JWT防止篡改,安全性高

JWT令牌結(jié)構(gòu):

JWT令牌由Header、PAyload、Signature三部分組成,每部分中間使用點(.)分隔,比如

xxxxx.yyyyy.zzzzz

1.Header

頭部包括令牌的類型(即JWT)及使用的哈希算法(如HMAC、HA256、RSA)

{“alg”:"HS256","typ":"JWT"}

2.Payload

負載,內(nèi)容也是一個json對象,他是存放有效信息的地方,它可以存放jwt提供的現(xiàn)成字段

例如:iss(簽發(fā)者),exp(過期時間戳),sub(面向的用戶)

{"sub","1234567890","name":"456","admin":"true"}

3.Signture

第三部分是簽名,此部分用于防止jwt內(nèi)容被篡改。這個部分使用base64url將前兩部分進行編碼,編碼后使用點(.)連接組成字符串,最后使用header中聲明簽名算法進行簽名

一個例子:

HMACSHA256(

base64UrlEncode(header)+ "."+base64UrlEncode(payload)+"."+secret)

base64UrlEncode(header):JWT第一部分

base64UrlEncode(payload):JWT第二部分

secret:簽名所使用的私鑰

JWT三部分只有第三部分是加密的,通過數(shù)字簽名機制,我們既可以保證數(shù)據(jù)完整性,也可以對數(shù)據(jù)來源進行身份驗證。

什么是簽名?

簽名是數(shù)字簽名,發(fā)送方將消息原文使用摘要算法生成摘要,再使用私鑰對摘要進行加密,生成數(shù)字簽名。

傳輸是數(shù)字簽名,發(fā)送方將信息原文使用摘要算法生成摘要,再用私鑰對摘要進行加密,生成數(shù)字簽名

1.發(fā)送方使用私鑰對內(nèi)容進行數(shù)字簽名

2.將內(nèi)容附帶數(shù)字簽名發(fā)送給對方

3.對方收到內(nèi)容和數(shù)字簽名,使用公鑰進行驗簽(相當于解密過程的過程),如果發(fā)現(xiàn)不一致則說明傳輸過程被篡改

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容