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的简单使用了~

欢迎各位老铁关注个人微信公众号~

相关文章
相关标签/搜索