1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        什么是JWT?現(xiàn)在還有人不知道JWT嗎?

        共 1933字,需瀏覽 4分鐘

         ·

        2023-08-21 19:43


        JWT介紹


        JWT概念

        JWT , 全寫JSON Web Token, 是開放的行業(yè)標準RFC7591,用來實現(xiàn)端到端安全驗證.

        簡單來說, 就是通過一些算法對加密字符串和JSON對象之間進行加解密。

        JWT加密JSON,保存在客戶端,不需要在服務(wù)端保存會話信息,可以應(yīng)用在前后端分離的用戶驗證上,后端對前端輸入的用戶信息進行加密產(chǎn)生一個令牌字符串, 前端再次請求時附加此字符串,后端再使用算法解密。

        JWT流程:

        e965ffdf6d45a1be58cd3370172e2c5b.webp

        JWT的構(gòu)成

        JWT字符串:一段加密的JSON字符串。

        包含了三類信息

        • Header頭部:Token類型和加密算法。加密算法常見的有MD5、SHA、HMAC( Hash Message Authentication Code)。
        • PayLoad負載:存放有效信息,包括

        標準的聲明,類似開發(fā)語言總的關(guān)鍵字。包括

            iss(Issuser) - 簽發(fā)者
        sub Subject 面向主體
        aud Audience 接收方
        exp Expiration time 過期時間戳
        nbf Not Before, 開始生效時間戳
        iat(Issued at) 簽發(fā)時間
        jti(JWT ID): 唯一標識

        公共的聲明:一般添加業(yè)務(wù)相關(guān)的必要信息,因為可解密,不建議敏感信息。

        私有的聲明:提供者和消費者共同定義的聲明,Base64對稱解密,不建議敏感信息

        Signature簽證

        簽證信息包括三部分:

        Base64加密的header

        Base64加密的payload

        secret-密鑰 使用header中聲明的加密算法對Header和payload的加密連接字符串進行加鹽secret組合加密。密鑰保存在服務(wù)端,服務(wù)端根據(jù)密鑰進行解密驗證。

        JWT與開發(fā)語言

        JWT只是一個標準 可以通過不過的開發(fā)語言實現(xiàn),包括Java,.NET, Python,Node Js, JavaScript,Perl, Ruby,Go等。同一種語言,不同的開發(fā)者提供了多種實現(xiàn)庫,以Java語言為例有java-jwt、?jose4j、nimbus-jose-jwt、jjwt

        JWT官網(wǎng)

        https://jwt.io/

        這個網(wǎng)站提供了在線的基于不同算法的字符串和JSON對象的轉(zhuǎn)換工具,同時也收集了不同語言的多種實現(xiàn)庫。23 種設(shè)計模式實戰(zhàn)(很全)分享一下。

        java-jwt

        java-jwt是Java語言中推薦的JWT實現(xiàn)庫,使用Maven導(dǎo)入如下:

            <dependency>
         <groupId>com.auth0</groupId>
         <artifactId>java-jwt</artifactId>
         <version>3.8.3</version>
        </dependency>

        產(chǎn)生加密Token

            String token = JWT.create()
          .withExpiresAt(newDate(System.currentTimeMillis()))  //設(shè)置過期時間
          .withAudience("user1") //設(shè)置接受方信息,一般時登錄用戶
          .sign(Algorithm.HMAC256("111111"));  //使用HMAC算法,111111作為密鑰加密

        解密Token獲取負載信息并驗證Token是否有效

            String userId = JWT.decode(token).getAudience().get(0);
        Assertions.assertEquals("user1", userId);
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("111111")).build();
        jwtVerifier.verify(token);


        瀏覽 30
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            看免费的一级黄片 | 三级无码视频 | 沟厕极品偷拍magnet | 久久国产美女视频 | 国产又爽 又黄 视频在线看 | 一级片视频免费 | 男女超爽视频 | 全黄h全肉失禁 | 污污成人网站十八禁免费观看 | 乱伦有码|