到底什麼是JWT技術?

2021-10-14 14:33:00 字數 1412 閱讀 9976

全稱為json web token,是乙個json物件,用於系統間身份驗證。主要包括三部分組成:

[header].[payload].[signature]
上面三部分用.分割。我們來看每一部分的具體內容:

header部分用於描述簽名的演算法,也可以包括content type。是乙個json物件,並且用base64處理。乙個簡單的header例子如下:

typ欄位告訴我們型別是jwt型別,alg告訴我們演算法是hs256。除了hs256,還有rs256,都是兩個常用的簽名演算法。

也可以不用任何簽名演算法,加密演算法,此時alg欄位為none,也是支援的,無非不安全。

payload部分是使用者資料真實儲存的地方,這個部分的資訊建議不要存放私密資訊,因為是任何人都可以讀取的。一般包括使用者資訊,以json的形式表示,同樣的,也是

base64處理後的。乙個簡單的例子如下:

userid:使用者id

iss:發行者

sub:代表內容

exp:失效時間

簽名是jwt的第三部分,主要是驗證json的有效性。服務端接收的jwt裡面,前兩部分是base64處理過的header和payload,簽名是利用header中定義的secret key和演算法生成簽名。

hashingalgo( base64urlencode(header) + 「.」 + base64urlencode(payload),secret)

舉個例子:

header:

payload:

secret: kerry111

生成的jwt如下:

eyjhbgcioijiuzi1niisinr5cci6ikpxvcj9.eyjpzci6mtizndu2nzg5lcjuyw1lijoism9zzxboin0.opossw7e485lop5przscxhb7sr6saomrckffwi4rp7o

jwt 認證流程:

authorization: bearer
oauth2.0是一種授權方式,一種流程規範。比如說你要訪問某個論壇,但是你不想重新註冊,你想用qq號登陸!(需要論壇先在qq開放平台註冊),那麼你登入的時候,選擇qq,它就會跳轉到qq的登入頁面,你登入完,再跳轉到論壇。論壇就會獲取qq給的授權資訊。我這裡只是簡單說一下流程,具體會複雜很多。

jwt,是token的一種形式,token說簡單了,就是乙個秘鑰(隨機數)。以往的token,你拿到之後要獲取 使用者資訊,需要再去資料庫匹配查詢,而jwt乾脆將使用者資訊儲存在了token裡,你解析就可以獲得。

所以,兩者根本就不是一種東西。

一句話:jwt是客戶端自說明的,服務端無狀態化,並且不需要查詢請求相關的使用者資訊,都包含在jwt的payload裡面。

到底什麼是 O R Mapper

一次和乙個群裡面的朋友聊天,有人說最近發現了新的設計資料庫方法,就是把資料庫的列和物件屬性一一對應,這樣設計很方便。我說寒,那有這麼容易的,實際情況複雜去了,怎麼能一一對應。原文 http dot junkies.weblog seichert posts 4677.aspx 讓我們從o r開始。字...

到底什麼是webservice

傳統上,我們把計算機後台程式 daemon 提供的功能,稱為 服務 service 比如,讓乙個防毒軟體在後台執行,它會自動監控系統,那麼這種自動監控就是乙個 服務 通俗地說,服務 就是計算機可以提供的某一種功能。舉例來說,我現在有一批,需要把它們的大小縮小一半。那麼,我們可以把 縮放 看成是一種服...

到底什麼是介面

設計模式中有很多地方用到了介面,敲機房的時候也用到了介面,介面到底是幹什麼的呢,為什麼要使用介面?我們真的清楚嗎?今天開會,說到七層,提到介面,問了這樣乙個問題,為什麼要用介面呢?我說介面是用來實現的,介面中沒有具體的方法體,介面為了讓d層實現,同時新增抽象工廠的時候也需要介面,但是到底什麼是介面,...