JWT的简单理解

新年好~

最近一直比较忙~新年第一篇文章来简单说下JWT
JWT(JSON Web Token)是一个开放标准(RFC 7519),被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。

JWT的使用场景:

1、授权,一旦用户登录后,每个后续的请求都会包含一个JWT,可以用来验证用户的身份,以及对路由,服务和资源的访问。
2、信息交换:由于使用了标头和有效负载计算签名,可以确保发送者的数据是么有被伪造过的。

JWT的组成

JWT使用'.'分隔的三部分就像这样:
xxxxx.yyyyy.zzzzz
结构就像这样

  • Header
  • Payload
  • Signature
Header

head部分一般是JWT的声明类型和算法像这样:

{
  "alg""HS256",
  "typ""JWT"
}
复制代码
payload:

令牌的第二部分是有效负载,一般有三种类型:

  • 标准中注册的声明
  • 公共的声明
  • 私有的声明
    像下面这样:
{
  "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. 用户通过登录页,进行登录。

  2. 服务端通过登录鉴权,如果用户合法,根据用户的信息和规划返回JWT

  3. 把生成的Token返回给用户。

4.用户在以后受保护的请求中,都会在请求头中加入Authorization: Bearer xxxx(token)

5.服务器端对此token进行验证看是否合法,返回结果。

6.用户接收返回结果。

如何应用JWT

一般是在请求头中加入Authorization,并加上Bearer标注

fetch('api/getUser/1', {
  headers: {
    'Authorization''Bearer ' + token
  }
})
复制代码

以上就是JWT的简单使用了~

欢迎各位老铁关注我的微信公众号~

转载于:https://juejin.im/post/5c2c27a5f265da61715e7063

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值