您好,登錄后才能下訂單哦!
這篇文章主要介紹“JWT結構由什么組成”,在日常操作中,相信很多人在JWT結構由什么組成問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JWT結構由什么組成”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
JSON Web Token(JWT)是一種開放標準(RFC 7519),它定義了一種緊湊且字自包含的標準,用于將各方之間的信息地傳輸為JSON對象。 該信息是通過數字簽名進行驗證。使用HMAC算法或使用RSA的公鑰/私鑰對JWT進行簽名,所以它的安全性非常高。
進一步解釋它的特點或者概念:
? 緊湊型(compact):由于是加密后的字符串,JWT數據體積非常的小,可通過 POST參數或HTTP請求頭發送。 另外,數據體積小意味著傳輸速度很快。
? 自包含(self-contained):JWT包含了用戶的所有信心,所以避免了每次查詢數據庫,降低了服務器的負載。
一般什么時候應該使用JWT呢?,一般使用在以下場景:
? 驗證:這是使用JWT的最常見的場景。 一旦用戶登錄,每個后續請求將包括JWT,允許用戶訪問該令牌允許的路由,服務和資源。 單點登錄是一個廣泛使用JWT的功能,因為它的開銷很小,并且能夠在不同的域中輕松使用。
? 信息交換:JWT是在各方之間安全傳輸信息的好方法,因為它們可以被簽名,例如使用公鑰/私鑰對. 另外,當使用標題和有效載荷計算簽名時,還可以驗證內容是否未被篡改。
JWT由三個部分組成,分別為“.”分隔,三部分組成如下:
Header(頭)
Payload(有效載荷)
Signature(簽名)
因此,JWT通常格式如下:
xxxxx.yyyyy.zzzzz
現在,依次對這三個組成部分,分開講解:
標題通常由兩部分組成:令牌的類型,即JWT,以及使用的哈希算法,如HMAC SHA256或RSA。
比如:
{ “alg”:“HS256”, “typ”:“JWT” }
將header進行Base64 編碼作為JWT的第一部分。
這是JWT的第二部分,包含了用戶的一些信息和Cliam(聲明、權利),有三種類型的Cliam:保留,公開和私人聲明。
一個典型的payload應該如下:
{ "sub": "1234567890", "name": "John Doe", "admin": true }
將payload進行Base64 編碼作為JWT的第二部分。
要創建簽名部分,需要使用到用Base64編碼后header和payloader,以及秘鑰,將它們簽名,一個典型的格式如下:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
來說下最常見的應用場景,即認證方面,如圖所示。客戶端通過用戶名密碼向服務器請求獲取某用戶的信息,包括用戶一些額外信息,比如權限,這些信息經過加密以JWT形式返回。獲取到該JWT的客戶端,在以后的每次請求中,都需要攜帶該JWT,這樣做的好處就是每次不需要查詢數據庫獲取該用戶的信息,在微服務這樣的分布式系統中,可以實現單點登錄。
到此,關于“JWT結構由什么組成”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。