json web token是用來做什麼的?

時間 2021-06-01 23:58:57

1樓:

Oauth2.0是一種授權協議。

jwt是一種會話憑證的形式,俗稱token。

採用Oauth2.0+rest+jwt做過專案,說下我對jwt的理解。

jwt是什麼,結構如何我就不說了,這類文章太多。要理解jwt,就要了解它要解決什麼問題,基於什麼思想。

一般我們用session處理會話,但一到負載均衡多機部署,多台機器如何共享會話狀態就成了問題,解決方案很多。

而jwt就是為了不讓後端儲存會話狀態,直接繞開了會話共享的問題。jwt就是用演算法換儲存空間的方式處理會話狀態。

jwt是Oauth2.0推薦的token形式,因為Oauth2.0基於HTTP協議是個無狀態的授權協議,但完全無狀態的jwt不現實,安全性得不到保證,如何廢除頒發的jwt是個問題,jwt並不是乙個成熟的方案,不要迷信,但是jwt的思想很好。

jwt就是一種會話令牌的形式,bearer token了解下。jwt+redis(只存用來簽名的key)才香。

2樓:space back

JSON web Token,簡稱JWT,本質是乙個token,是一種緊湊的URL安全方法,用於在網路通訊的雙方之間傳遞。一般放在HTTP的headers 引數裡面的authorization裡面,值的前面加Bearer關鍵字和空格。除此之外,也可以在url和request body中傳遞。

JWT有三部分依順序用點號(".")鏈結而成:1.header,2.payload,3.signature。

header裡面說明型別和使用的演算法,比如:

說明是JWT(JSON web token)型別,使用了HMAC SHA 演算法。這個值在鏈結之前需要用base64UrlEncoding加密。

payload是一組claim的值。claim包含claim name和claim value。前者是string型別,後者可以是任意的json物件。

claims有三種型別:reserved claim,public claim 和 private claim。reserved claim是預先定義好的,不強制使用但推薦使用的一組claim,比如 iss(issuer 發布者), exp(expiration time 失效時間),sub(subject 主題),aud(audience 聽眾) 等。

用於說明一些有用的互動資訊。

public claim,是指由JTWs所定義的,但是為了防止和其他名字發生重名的claims。它們需要定義成IANA JSON web token registery 裡面或者定義成乙個URI,這個URI包含一組固定的命名。

private claim 是客戶自己建立的用於彼此分享資訊。

舉個例子:

signature 就是用點號將header和payload聯絡起來,然後用header裡面指定的加密方法進行加密後的字串。

HMACSHA256(

base64UrlEncode(header) + "." +

base64UrlEncode(payload),

secret)

應用場景:

1.瀏覽器將使用者名稱和密碼以post請求的方式傳送給伺服器。

2.伺服器接受後驗證通過,用乙個金鑰生成乙個JWT。

3.伺服器將這個生成的JWT返回給瀏覽器。

4.瀏覽器將JWT包含在authorization header裡面,然後傳送請求給伺服器。

5.伺服器可以在JWT中提取使用者相關資訊。進行驗證。

6.伺服器驗證完成後,傳送響應結果給瀏覽器。

OAuth2.0 是乙個RFC協議,可以參考RFC6749,它定義了乙個安全認證框架。

簡單的說包含authentication 和authorization。 而openID connect 是基於這個框架上

的認證實現。上面說的JWT,也就是JSON web token, 在裡面得到了應用,可以解決

跨域的問題,詳細的資料,需要自己專研了。

3樓:out4b

JWT是cookie/session based authentication的替代品。oauth是一種授權協議,兩者沒有多少可比性,不過兩者都可以用在一些應用場景中,比如用來實現SSO

婆婆是用來幹啥的?

英語老師 時時刻刻在你耳邊念叨他是怎樣含辛茹苦養大他的兒子的,只有他的孩子養大不容易,媳婦這些都是喝西北風長大的,或者生下來就是這麼大了 飛舞的蝶 婆婆是用來幹啥的,用兒媳婦的角度回答是用來需要你的時候,給來帶孩子,做做家務,資助資助小兩口的生活。不需要的時候,少說話,別打擾。用婆婆的角度來回來是婆...

怎樣看待 道德用來約束自己,是高尚 用來約束他人,叫偽善 這句話?

我覺得這句話很有道理,經常看到網民噴這個噴那個,一度錯覺以為這世上好多正義人士,但回到現實中,身邊真的有那麼多高尚的 正義的 無私的人嗎?沒有,相反,我們常常會感覺現實中的人是自私的,冷漠的。所以,你以為網上指責別人的是什麼人,就是現實中冷漠 自私的這些人!他們如果用指責別人的標準要求自己,這世界會...

你們覺得錢是用來攢的還是用來花的?

張少 在這個年代,你得學會花錢,合理地花錢,有些人不敢花錢,那是因為他們沒有理財,沒有對自己的財務進行未來規劃。會花錢的人才更開心。從今天開始理財,讓自己成為乙個會花錢的人,當然得合理花錢,不過理財還是得規避以下 5 點誤區 1.只會存錢 對不少人來講,存錢是他們唯一懂的理財方式,把錢存起來安全性也...