欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Jwt庫的簡介及使用詳解

 更新時間:2021年11月09日 16:36:58   作者:oscar999  
JWT 是開放的行業(yè)標準RFC7591,用來實現端到端安全驗證,就是通過一些算法對加密字符串和JSON對象之間進行加解密,下面通過本文給大家介紹Java Jwt庫的簡介及使用,感興趣的朋友一起看看吧

JWT介紹

JWT概念

JWT , 全寫JSON Web Token, 是開放的行業(yè)標準RFC7591,用來實現端到端安全驗證.
簡單來說, 就是通過一些算法對加密字符串和JSON對象之間進行加解密。
JWT加密JSON,保存在客戶端,不需要在服務端保存會話信息。,可以應用在前后端分離的用戶驗證上,后端對前端輸入的用戶信息進行加密產生一個令牌字符串, 前端再次請求時附加此字符串,后端再使用算法解密。

JWT流程:

https://upload-images.jianshu.io/upload_images/4630295-7df0d10fcffe831b.png

JWT的構成

JWT字符串: 一段加密的JSON字符串。
包含了三類信息

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

1.標準的聲明,類似開發(fā)語言總的關鍵字。包括
iss(Issuser) - 簽發(fā)者
sub Subject 面向主體
aud Audience 接收方
exp Expiration time 過期時間戳
nbf Not Before, 開始生效時間戳
iat(Issued at) 簽發(fā)時間
jti(JWT ID): 唯一標識

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

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

  • Signature簽證

簽證信息包括三部分:

  • Base64加密的header
  • Base64加密的payload
  • secret-密鑰

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

 JWT與開發(fā)語言

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

JWT官網

https://jwt.io/

這個網站提供了在線的基于不同算法的字符串和JSON對象的轉換工具,同時也收集了不同語言的多種實現庫。

java-jwt

java-jwt是Java語言中推薦的JWT實現庫,使用Maven導入如下:

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

產生加密Token

String token = JWT.create()
            .withExpiresAt(newDate(System.currentTimeMillis()))  //設置過期時間
           .withAudience("user1") //設置接受方信息,一般時登錄用戶
          .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);             

到此這篇關于JWT介紹以及java-jwt的使用的文章就介紹到這了,更多相關java jwt使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java實現輸入輸出流代碼分享

    java實現輸入輸出流代碼分享

    這篇文章主要介紹了java實現輸入輸出流代碼分享的相關資料,需要的朋友可以參考下
    2015-09-09
  • 解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題

    解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題

    這篇文章主要介紹了解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • java解析xml之dom解析xml示例分享

    java解析xml之dom解析xml示例分享

    DOM將整個XML文件加載到內存中,并構建出節(jié)點樹;應用程序可以通過遍歷節(jié)點樹的方式來解析XML文件中的各個節(jié)點、屬性等信息; 這種方式便于對XML節(jié)點的添加修改等,而且解析也很方便,然后它比較耗費內存,解析速度也不快,下面看使用示例吧
    2014-01-01
  • 詳解SpringBoot啟動代碼和自動裝配源碼分析

    詳解SpringBoot啟動代碼和自動裝配源碼分析

    這篇文章主要介紹了SpringBoot啟動代碼和自動裝配源碼分析,使用SpringBoot很簡單,在主類中添加一個@SpringBootApplication,以及調用SpringApplication.run()并傳入主類,本文通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • SpringBoot整合模板引擎過程代碼實例

    SpringBoot整合模板引擎過程代碼實例

    這篇文章主要介紹了SpringBoot整合模板引擎過程代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • java通過ssh連接執(zhí)行shell命令,文件傳輸方式

    java通過ssh連接執(zhí)行shell命令,文件傳輸方式

    這篇文章主要介紹了java通過ssh連接執(zhí)行shell命令,文件傳輸方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Spring動態(tài)代理實現日志功能詳解

    Spring動態(tài)代理實現日志功能詳解

    這篇文章主要為大家詳細介紹了Spring動態(tài)代理實現日志功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • springboot3解決跨域的幾種方式小結

    springboot3解決跨域的幾種方式小結

    這篇文章主要介紹了springboot3解決跨域的幾種方式,文中通過代碼示例給大家介紹的非常詳細,對大家的解決跨域有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • Java中List、Set、Map的區(qū)別和實現方式示例代碼

    Java中List、Set、Map的區(qū)別和實現方式示例代碼

    這篇文章主要介紹了Java中List、Set、Map的區(qū)別和實現方式示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • springboot 如何使用jackson來處理實體類

    springboot 如何使用jackson來處理實體類

    這篇文章主要介紹了springboot使用jackson來處理實體類的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論