成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JSON WEB TOKEN(JWT)的分析

hsluoyz / 1494人閱讀

摘要:當(dāng)達(dá)到過期時(shí)間時(shí),需要對(duì)進(jìn)行續(xù)簽,可以定時(shí)想服務(wù)器提交請(qǐng)求,重新獲取來(lái)實(shí)現(xiàn)。注銷問題注銷問題當(dāng)客戶登錄的時(shí)候,需要注銷登錄會(huì)話,由于是沒有狀態(tài)的,只能在客戶端把刪除,偽造一個(gè)注銷的狀態(tài),真正的注銷只能等待過期。

JSON WEB TOKEN(JWT)的分析

一般情況下,客戶的會(huì)話數(shù)據(jù)會(huì)存在文件中,或者引入redis來(lái)存儲(chǔ),實(shí)現(xiàn)session的管理,但是這樣操作會(huì)存在一些問題,使用文件來(lái)存儲(chǔ)的時(shí)候,在多臺(tái)機(jī)器上,比較難實(shí)現(xiàn)共享,使用redis來(lái)存儲(chǔ)的時(shí)候,則需要引入多一個(gè)集群,這樣會(huì)增加管理的工作量,也不方便。有一個(gè)直觀的辦法,就是將session數(shù)據(jù),存儲(chǔ)在客戶端中,使用簽名校驗(yàn)數(shù)據(jù)是否有篡改,客戶請(qǐng)求的時(shí)候,把session數(shù)據(jù)帶上,獲取里面的數(shù)據(jù),通過校驗(yàn),然后進(jìn)行身份認(rèn)證。

數(shù)據(jù)存儲(chǔ)在客戶端中,會(huì)存在一些挑戰(zhàn):

  • 數(shù)據(jù)安全問題
  • 數(shù)據(jù)量不能太大
  • 續(xù)簽的問題
  • 注銷的問題

為了實(shí)現(xiàn)客戶端存儲(chǔ)會(huì)話數(shù)據(jù)的解決方案,制定了JSON Web Token的協(xié)議,詳細(xì)的協(xié)議可以在:RFC7529查看。下面我們看看jwt協(xié)議是怎樣解決上面的挑戰(zhàn)的。

JWT的結(jié)構(gòu):

JWT加密后,使用的格式,分為三部分,header,payload和signature,使用.號(hào)連接起來(lái):

Header.Payload.Signature

JWT的header:

JWT的header,定義了存儲(chǔ)的算法和協(xié)議名稱:

{
    "alg": "HS256",
    "typ": "JWT"
}

JWT的Payload:

下面這些負(fù)載字段,是JWT協(xié)議提供選用,一般情況下,payload的數(shù)據(jù)是不加密存儲(chǔ)在客戶端中的,所以要注意不要存儲(chǔ)敏感信息:

iss (issuer):簽發(fā)人
exp (expiration time):過期時(shí)間
sub (subject):主題
aud (audience):受眾
nbf (Not Before):生效時(shí)間
iat (Issued At):簽發(fā)時(shí)間
jti (JWT ID):編號(hào)

payload除了這些字段,還可以擴(kuò)展一些數(shù)據(jù),更加符合我們的需求:

{
    "iss": "foo",
    "extend_data": "hell"
}

JWT的Signature

服務(wù)端,有一個(gè)秘鑰,通過秘鑰對(duì)header和payload進(jìn)行簽名,使用header中指定的簽名算法類型,一般有HMAC,RSA和ECDSA,下面是簽名的格式:

HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

JWT的通訊方式

JWT一般會(huì)將token數(shù)據(jù)存儲(chǔ)在http請(qǐng)求的header中,通過Bearer來(lái)分隔:

headers: {
    "Authorization": "Bearer " + token
}

定義好數(shù)據(jù)結(jié)構(gòu)和通訊方式,下面看看如何處理一些問題:

續(xù)簽問題

每一個(gè)token產(chǎn)生,都應(yīng)該限制好過期時(shí)間,確保只能在一段時(shí)間內(nèi)有效,保證安全。當(dāng)達(dá)到過期時(shí)間時(shí),需要對(duì)token進(jìn)行續(xù)簽,可以定時(shí)想服務(wù)器提交請(qǐng)求,重新獲取token來(lái)實(shí)現(xiàn)。

注銷問題

當(dāng)客戶登錄的時(shí)候,需要注銷登錄會(huì)話,由于token是沒有狀態(tài)的,只能在客戶端把token刪除,偽造一個(gè)注銷的狀態(tài),真正的注銷只能等待token過期。

也可以有種辦法,就是把token的信息記錄在redis中,當(dāng)客戶退出時(shí),講redis中的token刪除,而一般請(qǐng)求時(shí),會(huì)通過redis對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),這樣可以實(shí)現(xiàn)真的注銷效果,但要引入多一個(gè)組件,把token變?yōu)橛袪顟B(tài),如果用這種辦法,也就不符合token存儲(chǔ)在客戶端的模式了

總結(jié)

如果能夠支持,會(huì)話用的數(shù)據(jù)量較小,對(duì)注銷可以等待超時(shí)的長(zhǎng)效的場(chǎng)景,使用jwt作為會(huì)話數(shù)據(jù)存儲(chǔ)是會(huì)比較方便的。而對(duì)于會(huì)話數(shù)據(jù)量大的場(chǎng)景,還是使用一般的方式比較好點(diǎn)。

參考資料

RFC7529

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/1240.html

相關(guān)文章

  • 跨域認(rèn)證解決方案-JSON WEB TOKEN講解與實(shí)戰(zhàn)

    摘要:簡(jiǎn)稱,在通信過程中,進(jìn)行身份認(rèn)證。服務(wù)器完全只靠這個(gè)對(duì)象認(rèn)定用戶身份。規(guī)定了個(gè)官方字段,供選用。1. JSON WEB TOKEN 1.1 什么是JWT ? JSON Web Token(JWT)是一個(gè)非常輕巧的規(guī)范。這個(gè)規(guī)范允許我們使用JWT在用戶和服務(wù)器之間傳遞安全可靠的信息。 ? 簡(jiǎn)稱JWT,在HTTP通信過程中,進(jìn)行身份認(rèn)證。 ? 我們知道HTTP通信是無(wú)狀態(tài)的,因此客戶端的請(qǐng)求到了...

    caozhijian 評(píng)論0 收藏0
  • 使用JWT(Json Web Token)實(shí)現(xiàn)登錄認(rèn)證

    摘要:今天我們來(lái)結(jié)合實(shí)例給大家講述的實(shí)戰(zhàn)應(yīng)用,就是如何使用前端與后端實(shí)現(xiàn)用戶登錄鑒權(quán)認(rèn)證的過程。只用了一個(gè)串,建立前后端的驗(yàn)證的數(shù)據(jù)傳遞,實(shí)現(xiàn)了有效的登錄鑒權(quán)過程。 今天我們來(lái)結(jié)合實(shí)例給大家講述JWT(Json Web Token)的實(shí)戰(zhàn)應(yīng)用,就是如何使用前端Axios與后端PHP實(shí)現(xiàn)用戶登錄鑒權(quán)認(rèn)證的過程。 文中涉及的重要知識(shí)點(diǎn): axios異步請(qǐng)求:axios-基于Promise的HTT...

    Yu_Huang 評(píng)論0 收藏0
  • 詳解 Cookie,Session,Token

    摘要:由于是存在客戶端上的,所以瀏覽器加入了一些限制確保不會(huì)被惡意使用,同時(shí)不會(huì)占據(jù)太多磁盤空間。簽名是對(duì)前兩部分的簽名,防止數(shù)據(jù)被篡改。的作用最開始的初衷是為了實(shí)現(xiàn)授權(quán)和身份認(rèn)證作用的,可以實(shí)現(xiàn)無(wú)狀態(tài),分布式的應(yīng)用授權(quán)。 前言 無(wú)狀態(tài)的HTTP協(xié)議 很久很久之前, Web基本都是文檔的瀏覽而已。既然是瀏覽, 作為服務(wù)器, 不需要記錄在某一段時(shí)間里都瀏覽了什么文檔, 每次請(qǐng)求都是一個(gè)新的HT...

    Allen 評(píng)論0 收藏0
  • jwt前后端整合方案

    摘要:到這里,基于的前后端分離實(shí)現(xiàn)方案就搞定啦四關(guān)于的一些思考實(shí)際上,在使用的過程中有一個(gè)比較致命的缺點(diǎn),就是一旦簽發(fā)了,在到期之前就會(huì)始終有效,除非服務(wù)器部署額外的邏輯。結(jié)語(yǔ)以上是關(guān)于基于的前后端分離實(shí)現(xiàn)方案的總結(jié)和思考。 一、jwt是什么 JWT全稱, JSON Web Token,是一個(gè)以JSON為基準(zhǔn)的標(biāo)準(zhǔn)規(guī)范。 舉例:服務(wù)器認(rèn)證以后,生成一個(gè) JSON 對(duì)象,發(fā)回給用戶,就像下...

    nevermind 評(píng)論0 收藏0
  • 如何在SpringBoot中集成JWT(JSON Web Token)鑒權(quán)

    摘要:在使用非對(duì)稱加密算法進(jìn)行簽名的時(shí)候,還可以用于驗(yàn)證的發(fā)件人是否與中申明的發(fā)件人是同一個(gè)人。如果沒有用非對(duì)稱加密算法的話,把復(fù)制之后直接可以去官網(wǎng)在線解析。 這篇博客主要是簡(jiǎn)單介紹了一下什么是JWT,以及如何在Spring Boot項(xiàng)目中使用JWT(JSON Web Token)。 1.關(guān)于JWT 1.1 什么是JWT 老生常談的開頭,我們要用這樣一種工具,首先得知道以下幾個(gè)問題。 這...

    yeyan1996 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<