最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Jwt庫(kù)的簡(jiǎn)介及使用詳解

 更新時(shí)間:2021年11月09日 16:36:58   作者:oscar999  
JWT 是開(kāi)放的行業(yè)標(biāo)準(zhǔn)RFC7591,用來(lái)實(shí)現(xiàn)端到端安全驗(yàn)證,就是通過(guò)一些算法對(duì)加密字符串和JSON對(duì)象之間進(jìn)行加解密,下面通過(guò)本文給大家介紹Java Jwt庫(kù)的簡(jiǎn)介及使用,感興趣的朋友一起看看吧

JWT介紹

JWT概念

JWT , 全寫(xiě)JSON Web Token, 是開(kāi)放的行業(yè)標(biāo)準(zhǔn)RFC7591,用來(lái)實(shí)現(xiàn)端到端安全驗(yàn)證.
簡(jiǎn)單來(lái)說(shuō), 就是通過(guò)一些算法對(duì)加密字符串和JSON對(duì)象之間進(jìn)行加解密。
JWT加密JSON,保存在客戶端,不需要在服務(wù)端保存會(huì)話信息。,可以應(yīng)用在前后端分離的用戶驗(yàn)證上,后端對(duì)前端輸入的用戶信息進(jìn)行加密產(chǎn)生一個(gè)令牌字符串, 前端再次請(qǐng)求時(shí)附加此字符串,后端再使用算法解密。

JWT流程:

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

JWT的構(gòu)成

JWT字符串: 一段加密的JSON字符串。
包含了三類(lèi)信息

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

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

2.公共的聲明: 一般添加業(yè)務(wù)相關(guān)的必要信息,因?yàn)榭山饷埽唤ㄗh敏感信息。

3.私有的聲明:提供者和消費(fèi)者共同定義的聲明,Base64對(duì)稱(chēng)解密,不建議敏感信息

  • Signature簽證

簽證信息包括三部分:

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

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

 JWT與開(kāi)發(fā)語(yǔ)言

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

JWT官網(wǎng)

https://jwt.io/

這個(gè)網(wǎng)站提供了在線的基于不同算法的字符串和JSON對(duì)象的轉(zhuǎn)換工具,同時(shí)也收集了不同語(yǔ)言的多種實(shí)現(xiàn)庫(kù)。

java-jwt

java-jwt是Java語(yǔ)言中推薦的JWT實(shí)現(xiàn)庫(kù),使用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è)置過(guò)期時(shí)間
           .withAudience("user1") //設(shè)置接受方信息,一般時(shí)登錄用戶
          .sign(Algorithm.HMAC256("111111"));  //使用HMAC算法,111111作為密鑰加密

解密Token獲取負(fù)載信息并驗(yàn)證Token是否有效

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

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

相關(guān)文章

  • IDEA中Web項(xiàng)目控制臺(tái)亂碼的問(wèn)題及解決方法

    IDEA中Web項(xiàng)目控制臺(tái)亂碼的問(wèn)題及解決方法

    這篇文章主要介紹了IDEA中Web項(xiàng)目控制臺(tái)亂碼的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring源碼解析之循環(huán)依賴(lài)的實(shí)現(xiàn)流程

    Spring源碼解析之循環(huán)依賴(lài)的實(shí)現(xiàn)流程

    這篇文章主要介紹了Spring源碼解析之循環(huán)依賴(lài)的實(shí)現(xiàn)流程,文章基于Java的相關(guān)內(nèi)容展開(kāi)循環(huán)依賴(lài)的實(shí)現(xiàn)流程,需要的小伙伴可以參考一下
    2022-07-07
  • Java實(shí)例講解Comparator的使用

    Java實(shí)例講解Comparator的使用

    我們先介紹一下comparator,我們后文稱(chēng)為比較器。比較器實(shí)際上是一個(gè)實(shí)現(xiàn)了comparator interface是一個(gè)實(shí)例,在Arrays.sort方法我們可以提供這樣一個(gè)實(shí)例,即使被排序的object沒(méi)有實(shí)現(xiàn)comparable接口,我們也可以排序了
    2022-11-11
  • Springboot傳參詳解

    Springboot傳參詳解

    這篇文章主要介紹了Springboot傳參的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • SpringBoot整合Mybatis,解決TypeAliases配置失敗的問(wèn)題

    SpringBoot整合Mybatis,解決TypeAliases配置失敗的問(wèn)題

    這篇文章主要介紹了SpringBoot整合Mybatis,解決TypeAliases配置失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • apllo開(kāi)源分布式配置中心詳解

    apllo開(kāi)源分布式配置中心詳解

    這篇文章主要為大家介紹了apllo開(kāi)源分布式配置中心部署詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • mac系統(tǒng)如何下載和安裝jdk的三種方式

    mac系統(tǒng)如何下載和安裝jdk的三種方式

    這篇文章主要介紹了mac系統(tǒng)下載和安裝jdk的三種方式,每種方法都有其特點(diǎn),如安裝來(lái)源及可靠性、安裝過(guò)程及便捷性、版本管理及切換、環(huán)境配置、jdk默認(rèn)安裝路徑以及占用空間及資源管理等,需要的朋友可以參考下
    2025-01-01
  • Java高級(jí)特性基礎(chǔ)之反射五連問(wèn)

    Java高級(jí)特性基礎(chǔ)之反射五連問(wèn)

    反射賦予了我們?cè)谶\(yùn)行時(shí)分析類(lèi)以及執(zhí)行類(lèi)中方法的能力。通過(guò)反射你可以獲取任意一個(gè)類(lèi)的所有屬性和方法,你還可以調(diào)用這些方法和屬性。本文就來(lái)和大家詳細(xì)聊聊Java中的反射,感興趣的可以了解一下
    2023-01-01
  • mybatis如何設(shè)置useGeneratedKeys=true

    mybatis如何設(shè)置useGeneratedKeys=true

    這篇文章主要介紹了mybatis如何設(shè)置useGeneratedKeys=true,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-01-01
  • Java實(shí)現(xiàn)簡(jiǎn)單的銀行管理系統(tǒng)的示例代碼

    Java實(shí)現(xiàn)簡(jiǎn)單的銀行管理系統(tǒng)的示例代碼

    這篇文章主要介紹了如何利用Java實(shí)現(xiàn)簡(jiǎn)單的銀行管理系統(tǒng),可以實(shí)現(xiàn)存款,取款,查詢等功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-09-09

最新評(píng)論

承德市| 大埔区| 汉川市| 香港 | 平邑县| 芒康县| 本溪| 台南市| 砚山县| 黄陵县| 和田县| 孟村| 仁布县| 商城县| 崇明县| 景宁| 叙永县| 云和县| 新民市| 凯里市| 桓台县| 保德县| 宜宾县| 海安县| 榆林市| 治县。| 广灵县| 宁远县| 肃北| 龙岩市| 韶山市| 武威市| 炎陵县| 甘肃省| 高碑店市| 泸州市| 搜索| 包头市| 福建省| 仙桃市| 吉水县|