JWT的簡單理解

新年好~css

最近一直比較忙~新年第一篇文章來簡單說下JWT
JWT(JSON Web Token)是一個開放標準(RFC 7519),被設計爲緊湊且安全的,特別適用於分佈式站點的單點登陸(SSO)場景。算法

JWT的使用場景:

一、受權,一旦用戶登陸後,每一個後續的請求都會包含一個JWT,能夠用來驗證用戶的身份,以及對路由,服務和資源的訪問。
二、信息交換:因爲使用了標頭和有效負載計算簽名,能夠確保發送者的數據是麼有被僞造過的。json

JWT的組成

JWT使用'.'分隔的三部分就像這樣:
xxxxx.yyyyy.zzzzz
結構就像這樣api

  • Header
  • Payload
  • Signature

Header

head部分通常是JWT的聲明類型和算法像這樣:安全

{
  "alg""HS256",
  "typ""JWT"
}
複製代碼

payload:

令牌的第二部分是有效負載,通常有三種類型:bash

  • 標準中註冊的聲明
  • 公共的聲明
  • 私有的聲明
    像下面這樣:
{
  "sub""1234567890",
  "name""John Doe",
  "admin"true
}
複製代碼

Signature

其中sub指的是接收JWT的一方,而後還會包含一些其餘的信息:例如名稱等等
簽名:JWT的最後一部分就是簽名了,主要包括三部分:服務器

  • the encoded header (base64以後的)
  • the encoded payload (base64以後)
  • secret

這三部分就是通過base64加密後的headerpayload而後經過header中的加密方式進行加鹽secret組合加密。
而後上面三部分其實就是下面這段字符串的組合微信

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
複製代碼

JWT的工做流程

  1. 用戶經過登陸頁,進行登陸。app

  2. 服務端經過登陸鑑權,若是用戶合法,根據用戶的信息和規劃返回JWT分佈式

  3. 把生成的Token返回給用戶。

4.用戶在之後受保護的請求中,都會在請求頭中加入Authorization: Bearer xxxx(token)

5.服務器端對此token進行驗證看是否合法,返回結果。

6.用戶接收返回結果。

如何應用JWT

通常是在請求頭中加入Authorization,並加上Bearer標註

fetch('api/getUser/1', {
  headers: {
    'Authorization''Bearer ' + token
  }
})
複製代碼

以上就是JWT的簡單使用了~

歡迎各位老鐵關注個人微信公衆號~

相關文章
相關標籤/搜索