在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > JWT的數(shù)據(jù)格式詳解

            JWT的數(shù)據(jù)格式詳解

            發(fā)布人:電子禪石 時(shí)間:2024-02-23 來源:工程師 發(fā)布文章
            1.1.簡介

            JWT,全稱是Json Web Token, 是JSON風(fēng)格輕量級(jí)的授權(quán)和身份認(rèn)證規(guī)范,可實(shí)現(xiàn)無狀態(tài)、分布式的Web應(yīng)用授權(quán);它是分布式服務(wù)權(quán)限控制的標(biāo)準(zhǔn)解決方案!

            官網(wǎng):https://jwt.io

            GitHub上jwt的java客戶端:https://github.com/jwtk/jjwt


            1.2.數(shù)據(jù)格式

            普通的token:32位UUID

            在這里插入圖片描述

            JWT的token:.

            在這里插入圖片描述

            JWT的token包含三部分?jǐn)?shù)據(jù):


            Header:頭部,通常頭部有兩部分信息:

            聲明類型type,這里是JWT(type=jwt)

            加密算法,自定義(rs256/base64/hs256)

            我們會(huì)對(duì)頭部進(jìn)行base64加密(可解密),得到第一部分?jǐn)?shù)據(jù)

            Payload:載荷,就是有效數(shù)據(jù),一般包含下面信息:

            用戶身份信息-userid,username(注意,這里因?yàn)椴捎胋ase64加密,可解密,

            因此不要存放敏感信息)

            注冊(cè)聲明:如token的簽發(fā)時(shí)間,過期時(shí)間,簽發(fā)人等

            這部分也會(huì)采用base64加密,得到第二部分?jǐn)?shù)據(jù)

            Signature:base64加密,簽名,是整個(gè)數(shù)據(jù)的認(rèn)證信息。

            一般根據(jù)前兩步的數(shù)據(jù),再加上服務(wù)的的密鑰(secret,鹽)(不要泄漏,最好周期性更換)

            ,通過加密算法生成。用于驗(yàn)證整個(gè)數(shù)據(jù)完整和可靠性

            一個(gè)JWT實(shí)際上就是一個(gè)字符串,它由三部分組成,頭部、載荷與簽名。

            ————————————————

            頭部(header)

            頭部用于描述關(guān)于該JWT的最基本的信息,例如其類型以及簽名所用的算法等。這也可以 被表示成一個(gè)JSON對(duì)象。

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

            這就是頭部的明文內(nèi)容,第一部分說明他是一個(gè)jwt,第二部分則指出簽名算法用的是HS256算法。

            然后將這個(gè)頭部進(jìn)行BASE64編碼,編碼后形成頭部:

            eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

            載荷(payload)

            載荷就是存放有效信息的地方,有效信息包含三個(gè)部分:


            (1)標(biāo)準(zhǔn)中注冊(cè)的聲明(建議但不強(qiáng)制使用)


            iss: jwt簽發(fā)者

            sub: jwt所面向的用戶

            aud: 接收jwt的一方

            exp: jwt的過期時(shí)間,這個(gè)過期時(shí)間必須要大于簽發(fā)時(shí)間

            nbf: 定義在什么時(shí)間之前,該jwt都是不可用的.

            iat: jwt的簽發(fā)時(shí)間

            jti: jwt的唯一身份標(biāo)識(shí),主要用來作為一次性token,從而回避重放攻擊。

            (2)公共的聲明


            公共的聲明可以添加任何的信息,一般添加用戶的相關(guān)信息或其他業(yè)務(wù)需要的必要信息. 

            但不建議添加敏感信息,因?yàn)樵摬糠衷诳蛻舳丝山饷?


            (3)私有的聲明


            私有聲明是提供者和消費(fèi)者所共同定義的聲明,一般不建議存放敏感信息,

            因?yàn)閎ase64 是對(duì)稱解密的,意味著該部分信息可以歸類為明文信息。

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

            上面就是一個(gè)簡單的載荷的明文,接下來使用base64加密:

            eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9

            簽證(signature)

            jwt的第三部分是一個(gè)簽證信息,這個(gè)簽證信息由三部分組成:


            header (base64后的)

            payload (base64后的)

            secret

            這個(gè)部分需要base64加密后的header和base64加密后的payload使用.連接組成的字符串,

            然后通過header中聲明的加密方式進(jìn)行加鹽secret組合加密,然后就構(gòu)成了jwt的第 三部分。


            結(jié)論:


            1 jwt的一個(gè)有規(guī)則的token


            2 它有三部分組成:Header.payload.signature,每部分都是通過base64加密而成的


            3 jwt每個(gè)部分都是可以解密的

            ————————————————


              版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,

            轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。

                                    

            原文鏈接:https://blog.csdn.net/weixin_43814195/article/details/84957153            



                                    




            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



            關(guān)鍵詞: jwt

            技術(shù)專區(qū)

            關(guān)閉