日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

和jwt_秒懂 JWT

發(fā)布時(shí)間:2025/3/19 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 和jwt_秒懂 JWT 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 | 喵叔

責(zé)編 | 胡巍巍

出品 | 程序人生(ID:coder_life)

JWT 英文名是 Json Web Token ,是一種用于通信雙方之間傳遞安全信息的簡(jiǎn)潔的、URL安全的表述性聲明規(guī)范,經(jīng)常用在跨域身份驗(yàn)證。

JWT 以 JSON 對(duì)象的形式安全傳遞信息。因?yàn)榇嬖跀?shù)字簽名,因此所傳遞的信息是安全的。

在講解 JWT 之前我們先來(lái)看一個(gè)問(wèn)題。我們都知道 Internet 服務(wù)的身份驗(yàn)正過(guò)程是這樣的,客戶端向服務(wù)器發(fā)送登錄名和登錄密碼,服務(wù)器驗(yàn)證后將對(duì)應(yīng)的相關(guān)信息保存到當(dāng)前會(huì)話中,這些信息包括權(quán)限、角色等數(shù)據(jù)。

服務(wù)器向客戶端返回 Session ,Session 信息都會(huì)寫入到客戶端的 Cookie 中,后面的請(qǐng)求都會(huì)從 Cookie 中讀取 Session 發(fā)送給服務(wù)器,服務(wù)器在收到 Session 后會(huì)對(duì)比保存的數(shù)據(jù)來(lái)確認(rèn)客戶端身份。

但是上述模式存在一個(gè)問(wèn)題,無(wú)法橫向擴(kuò)展。在服務(wù)器集群或者面向服務(wù)且跨域的結(jié)構(gòu)中,需要數(shù)據(jù)庫(kù)來(lái)保存 Session 會(huì)話,實(shí)現(xiàn)服務(wù)器之間的會(huì)話數(shù)據(jù)共享。

在單點(diǎn)登錄中我們會(huì)遇到上述問(wèn)題,當(dāng)有多個(gè)網(wǎng)站提供同一撥服務(wù),那么我們?cè)撛趺磳?shí)現(xiàn)在甲網(wǎng)站登陸后其他網(wǎng)站也同時(shí)登錄呢?

其中一種方法是持久化 Session 數(shù)據(jù),也就是上面所說(shuō)的將 Session 會(huì)話存到數(shù)據(jù)庫(kù)中。這個(gè)方法的優(yōu)點(diǎn)是架構(gòu)清晰明了。

但是缺點(diǎn)也非常明顯,就是架構(gòu)修改很困難,驗(yàn)證邏輯需要重寫,并且整體依賴于數(shù)據(jù)庫(kù),如果存儲(chǔ) Session 會(huì)話的數(shù)據(jù)庫(kù)掛掉那么整個(gè)身份認(rèn)證就無(wú)法使用,進(jìn)而導(dǎo)致系統(tǒng)無(wú)法登錄。要解決這個(gè)問(wèn)題我們就用到了 JWT 。

JWT 簡(jiǎn)述

客戶端身份經(jīng)過(guò)服務(wù)器驗(yàn)證通過(guò)后,會(huì)生成帶有簽名的 JSON 對(duì)象并將它返回給客戶端。客戶端在收到這個(gè) JSON 對(duì)象后存儲(chǔ)起來(lái)。

在以后的請(qǐng)求中客戶端將 JSON 對(duì)象連同請(qǐng)求內(nèi)容一起發(fā)送給服務(wù)器,服務(wù)器收到請(qǐng)求后通過(guò) JSON 對(duì)象標(biāo)識(shí)用戶,如果驗(yàn)證不通過(guò)則不返回請(qǐng)求的數(shù)據(jù)。

驗(yàn)證不通過(guò)的情況有很多,比如簽名不正確、無(wú)權(quán)限等。在 JWT 中服務(wù)器不保存任何會(huì)話數(shù)據(jù),使得服務(wù)器更加容易擴(kuò)展。

Base64URL 算法

在講解 JWT 的組成結(jié)構(gòu)前我們先來(lái)講解一下 Base64URL 算法。這個(gè)算法和 Base64 算法類似,但是有一點(diǎn)區(qū)別。

我們通過(guò)名字可以得知這個(gè)算法使用于 URL 的,因此它將 Base64 中的 + 、 / 、 = 三個(gè)字符替換成了 - 、 _ ,刪除掉了 = 。因?yàn)檫@個(gè)三個(gè)字符在 URL 中有特殊含義。

JWT 組成結(jié)構(gòu)

JWT 是由三段字符串和兩個(gè) . 組成,每個(gè)字符串和字符串之間沒有換行(類似于這樣:xxxxxx.yyyyyy.zzzzzz),每個(gè)字符串代表了不同的功能,我們將這三個(gè)字符串的功能按順序列出來(lái)并講解:

1. JWT 頭

JWT 頭描述了 JWT 元數(shù)據(jù),是一個(gè) JSON 對(duì)象,它的格式如下:

json

{

"alg":"HS256

總結(jié)

以上是生活随笔為你收集整理的和jwt_秒懂 JWT的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。