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

關(guān)于JWT與cookie和token的區(qū)別說明

 更新時(shí)間:2021年10月01日 08:49:54   作者:微微一笑滿城空  
這篇文章主要介紹了JWT與cookie和token的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一. cookie

A)cookie如何認(rèn)證

1.用戶輸入用戶名與密碼,發(fā)送給服務(wù)器。

2.服務(wù)器驗(yàn)證用戶名和密碼,正確的就創(chuàng)建一個(gè)會(huì)話(session),同時(shí)會(huì)把這個(gè)會(huì)話的ID保存到客戶端瀏覽器中,因?yàn)楸4娴牡胤绞菫g覽器的cookie,所以這種認(rèn)證方式叫做基于cookie的認(rèn)證方式。

3.后續(xù)的請(qǐng)求中,瀏覽器會(huì)發(fā)送會(huì)話ID到服務(wù)器,服務(wù)器上如果能找到對(duì)應(yīng)的ID的會(huì)話,那么服務(wù)器就會(huì)返回需要的數(shù)據(jù)給瀏覽器。

4.當(dāng)用戶退出登錄,會(huì)話會(huì)同時(shí)在客戶端和服務(wù)器端被銷毀。

B)cookie認(rèn)證方式的不足之處

1.服務(wù)器要為每個(gè)用戶保留session信息,連接用戶過多會(huì)造成服務(wù)器內(nèi)存壓力過大。

2.適合單一域名,不適合第三方請(qǐng)求。

二. token

A)token的認(rèn)證過程

1.用戶輸入用戶名和密碼,發(fā)送給服務(wù)器。

2.服務(wù)器驗(yàn)證用戶名和密碼,正確的話就返回一個(gè)簽名過的token(token 可以認(rèn)為就是個(gè)長(zhǎng)長(zhǎng)的字符串),瀏覽器客戶端拿到這個(gè)token。

3.后續(xù)每次請(qǐng)求中,瀏覽器會(huì)把token作為http header發(fā)送給服務(wù)器,服務(wù)器驗(yàn)證簽名是否有效,如果有效那么認(rèn)證就成功,可以返回客戶端需要的數(shù)據(jù)。

4.一旦用戶退出登錄,只需要客戶端銷毀token即可,服務(wù)器端不需要任何操作。

B)token認(rèn)證方式的特點(diǎn)

這種方式的特點(diǎn)就是客戶端的token中自己保留有大量信息,服務(wù)器沒有存儲(chǔ)這些信息,而只負(fù)責(zé)驗(yàn)證,不必進(jìn)行數(shù)據(jù)庫查詢,執(zhí)行效率大大提高。

三. JWT

A)JWT介紹

1.JWT是json web token縮寫。它將用戶信息加密到token里,服務(wù)器不保存任何用戶信息。服務(wù)器通過使用保存的密鑰驗(yàn)證token的正確性,只要正確即通過驗(yàn)證。

2.優(yōu)點(diǎn)是在分布式系統(tǒng)中,很好地解決了單點(diǎn)登錄問題,很容易解決了session共享的問題。jwt長(zhǎng)度較小,且可以使用URL傳輸(URLsafe)。不想cookies只能在web環(huán)境起作用。 JWT可以同時(shí)使用在web環(huán)境和RESTfull的接口。

缺點(diǎn)是無法作廢已頒布的令牌/不易應(yīng)對(duì)數(shù)據(jù)過期。

B)JWT組成

JWT包含三個(gè)部分: Header頭部,Payload負(fù)載和Signature簽名。由三部分生成token,三部分之間用“.”號(hào)做分割。

列如 :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

1.Header

在Header中通常包含了兩部分:type:代表token的類型,這里使用的是JWT類型。 alg:使用的Hash算法,例如HMAC SHA256或RSA.

{
“alg”: “HS256”,
“typ”: “JWT”
}

這會(huì)被經(jīng)過base64Url編碼形成第一部分

2.Payload

token的第二個(gè)部分是荷載信息,它包含一些聲明Claim(實(shí)體的描述,通常是一個(gè)User信息,還包括一些其他的元數(shù)據(jù))

聲明分三類:

1)Reserved Claims,這是一套預(yù)定義的聲明,并不是必須的,這是一套易于使用、操作性強(qiáng)的聲明。包括:iss(issuer)、exp(expirationtime)、sub(subject)、aud(audience)等

2)Plubic Claims,

3)Private Claims,交換信息的雙方自定義的聲明

{
“sub”: “1234567890”,
“name”: “John Doe”,
“admin”: true
}

同樣經(jīng)過Base64Url編碼后形成第二部分

3.signature

使用header中指定的算法將編碼后的header、編碼后的payload、一個(gè)secret進(jìn)行加密。

例如使用的是HMAC SHA256算法,大致流程類似于: HMACSHA256( base64UrlEncode(header) + “.” + base64UrlEncode(payload), secret)

這個(gè)signature字段被用來確認(rèn)JWT信息的發(fā)送者是誰,并保證信息沒有被修改

C)為什么要使用JWT

相比XML格式,JSON更加簡(jiǎn)潔,編碼之后更小,這使得JWT比SAML更加簡(jiǎn)潔,更加適合在HTML和HTTP環(huán)境中傳遞。

在安全性方面,SWT只能夠使用HMAC算法和共享的對(duì)稱秘鑰進(jìn)行簽名,而JWT和SAML

token則可以使用X.509認(rèn)證的公私秘鑰對(duì)進(jìn)行簽名。與簡(jiǎn)單的JSON相比,XML和XML數(shù)字簽名會(huì)引入復(fù)雜的安全漏洞。

因?yàn)镴SON可以直接映射為對(duì)象,在大多數(shù)編程語言中都提供了JSON解析器,而XML則沒有這么自然的文檔-對(duì)象映射關(guān)系,這就使得使用JWT比SAML更方便

java json web token工具類

D)JWT的Maven引入

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.0</version>
</dependency>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • springboot2.1.7去除json返回字段中為null的字段

    springboot2.1.7去除json返回字段中為null的字段

    這篇文章主要介紹了springboot2.1.7去除json返回字段中為null的字段,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • java生成XML的方法【附demo源碼下載】

    java生成XML的方法【附demo源碼下載】

    這篇文章主要介紹了java生成XML的方法,涉及java針對(duì)xml格式文件的簡(jiǎn)單操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-12-12
  • 幾種JAVA細(xì)粒度鎖的實(shí)現(xiàn)方式

    幾種JAVA細(xì)粒度鎖的實(shí)現(xiàn)方式

    這篇文章主要為大家詳細(xì)介紹了幾種JAVA細(xì)粒度鎖的實(shí)現(xiàn)方式,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java調(diào)用新浪api通過Ip查詢地區(qū)

    Java調(diào)用新浪api通過Ip查詢地區(qū)

    這篇文章主要介紹了Java調(diào)用新浪接口通過Ip查詢地區(qū),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java多線程實(shí)現(xiàn)Callable接口

    Java多線程實(shí)現(xiàn)Callable接口

    本文給大家分享的是使用Java多線程來實(shí)現(xiàn)callable接口的方法,以及使用方法,另外還有一個(gè)網(wǎng)友的實(shí)例,希望能夠?qū)Υ蠹艺莆認(rèn)ava多線程有所幫助。
    2016-06-06
  • SpringBoot中的ImportSelector類動(dòng)態(tài)加載bean詳解

    SpringBoot中的ImportSelector類動(dòng)態(tài)加載bean詳解

    這篇文章主要介紹了SpringBoot中的ImportSelector類動(dòng)態(tài)加載bean詳解,ImportSelector接口是spring中導(dǎo)入外部配置的核心接口,根據(jù)給定的條件(通常是一個(gè)或多個(gè)注釋屬性)判定要導(dǎo)入那個(gè)配置類,在spring自動(dòng)化配置和@EnableXXX中都有它的存在,需要的朋友可以參考下
    2024-01-01
  • Java9 集合工廠方法解析

    Java9 集合工廠方法解析

    這篇文章主要介紹了Java9 集合工廠方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java實(shí)現(xiàn)簡(jiǎn)單的ATM項(xiàng)目

    java實(shí)現(xiàn)簡(jiǎn)單的ATM項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的ATM項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Java實(shí)現(xiàn)經(jīng)典捕魚達(dá)人游戲的示例代碼

    Java實(shí)現(xiàn)經(jīng)典捕魚達(dá)人游戲的示例代碼

    《捕魚達(dá)人》是一款以深海狩獵為題材的休閑競(jìng)技游戲。本文將利用Java實(shí)現(xiàn)這一經(jīng)典的游戲,文中采用了swing技術(shù)進(jìn)行了界面化處理,需要的可以參考一下
    2022-02-02
  • Java動(dòng)態(tài)驗(yàn)證碼單線設(shè)計(jì)的兩種方法

    Java動(dòng)態(tài)驗(yàn)證碼單線設(shè)計(jì)的兩種方法

    這篇文章主要介紹了Java動(dòng)態(tài)驗(yàn)證碼單線設(shè)計(jì)的兩種方法,需要的朋友可以參考下
    2018-07-07

最新評(píng)論

滁州市| 连江县| 宁强县| 汝州市| 永宁县| 尉犁县| 团风县| 克山县| 江津市| 丽水市| 大竹县| 迁西县| 临沂市| 保靖县| 睢宁县| 西安市| 梧州市| 望江县| 北流市| 景东| 团风县| 利川市| 镇沅| 琼结县| 雷波县| 乌鲁木齐市| 邯郸县| 莆田市| 宿州市| 抚宁县| 遵义市| 剑河县| 江津市| 竹北市| 南阳市| 环江| 乐安县| 黄山市| 扶绥县| 岗巴县| 甘肃省|