国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JSON WEB TOKEN(JWT)的分析

hsluoyz / 1486人閱讀

摘要:當達到過期時間時,需要對進行續簽,可以定時想服務器提交請求,重新獲取來實現。注銷問題注銷問題當客戶登錄的時候,需要注銷登錄會話,由于是沒有狀態的,只能在客戶端把刪除,偽造一個注銷的狀態,真正的注銷只能等待過期。

JSON WEB TOKEN(JWT)的分析

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

數據存儲在客戶端中,會存在一些挑戰:

  • 數據安全問題
  • 數據量不能太大
  • 續簽的問題
  • 注銷的問題

為了實現客戶端存儲會話數據的解決方案,制定了JSON Web Token的協議,詳細的協議可以在:RFC7529查看。下面我們看看jwt協議是怎樣解決上面的挑戰的。

JWT的結構:

JWT加密后,使用的格式,分為三部分,header,payload和signature,使用.號連接起來:

Header.Payload.Signature

JWT的header:

JWT的header,定義了存儲的算法和協議名稱:

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

JWT的Payload:

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

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

payload除了這些字段,還可以擴展一些數據,更加符合我們的需求:

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

JWT的Signature

服務端,有一個秘鑰,通過秘鑰對header和payload進行簽名,使用header中指定的簽名算法類型,一般有HMAC,RSA和ECDSA,下面是簽名的格式:

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

JWT的通訊方式

JWT一般會將token數據存儲在http請求的header中,通過Bearer來分隔:

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

定義好數據結構和通訊方式,下面看看如何處理一些問題:

續簽問題

每一個token產生,都應該限制好過期時間,確保只能在一段時間內有效,保證安全。當達到過期時間時,需要對token進行續簽,可以定時想服務器提交請求,重新獲取token來實現。

注銷問題

當客戶登錄的時候,需要注銷登錄會話,由于token是沒有狀態的,只能在客戶端把token刪除,偽造一個注銷的狀態,真正的注銷只能等待token過期。

也可以有種辦法,就是把token的信息記錄在redis中,當客戶退出時,講redis中的token刪除,而一般請求時,會通過redis對數據進行校驗,這樣可以實現真的注銷效果,但要引入多一個組件,把token變為有狀態,如果用這種辦法,也就不符合token存儲在客戶端的模式了

總結

如果能夠支持,會話用的數據量較小,對注銷可以等待超時的長效的場景,使用jwt作為會話數據存儲是會比較方便的。而對于會話數據量大的場景,還是使用一般的方式比較好點。

參考資料

RFC7529

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/1240.html

相關文章

  • 跨域認證解決方案-JSON WEB TOKEN講解與實戰

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

    caozhijian 評論0 收藏0
  • 使用JWT(Json Web Token)實現登錄認證

    摘要:今天我們來結合實例給大家講述的實戰應用,就是如何使用前端與后端實現用戶登錄鑒權認證的過程。只用了一個串,建立前后端的驗證的數據傳遞,實現了有效的登錄鑒權過程。 今天我們來結合實例給大家講述JWT(Json Web Token)的實戰應用,就是如何使用前端Axios與后端PHP實現用戶登錄鑒權認證的過程。 文中涉及的重要知識點: axios異步請求:axios-基于Promise的HTT...

    Yu_Huang 評論0 收藏0
  • 詳解 Cookie,Session,Token

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

    Allen 評論0 收藏0
  • jwt前后端整合方案

    摘要:到這里,基于的前后端分離實現方案就搞定啦四關于的一些思考實際上,在使用的過程中有一個比較致命的缺點,就是一旦簽發了,在到期之前就會始終有效,除非服務器部署額外的邏輯。結語以上是關于基于的前后端分離實現方案的總結和思考。 一、jwt是什么 JWT全稱, JSON Web Token,是一個以JSON為基準的標準規范。 舉例:服務器認證以后,生成一個 JSON 對象,發回給用戶,就像下...

    nevermind 評論0 收藏0
  • 如何在SpringBoot中集成JWT(JSON Web Token)鑒權

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

    yeyan1996 評論0 收藏0

發表評論

0條評論

hsluoyz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<