第八章第二节Node.js开发仿知乎服务端 深入理解RESTful API

JWT 简介

什么是JWT?

  • JSON Web Token是一个开放标准(详细内容记录在RFC 7519,RFC是请求注解文档)
  • 定义了一种紧凑且独立的方式,可以将各方之间的消息作为JSON对象进行安全传输
  • 该信息可以验证和信任,因为是经过数字签名的(一种签名算法可以通过一个密钥生成令牌,也可以拿令牌验证是否正确)

JWT的构成

  • 头部(Header)
  • 有效载荷 (Payload)
  • 签名 (Signature)

JWT的例子

第八章第二节Node.js开发仿知乎服务端 深入理解RESTful API_第1张图片

Header

  • 本质上是一个json,其中有2个字段
  • typ:token令牌的类型,这里固定为JWT
  • alg:使用的hash算法,例如:HMAC SHA256 或者 RSA

Header编码前后

第八章第二节Node.js开发仿知乎服务端 深入理解RESTful API_第2张图片

生成令牌中把json用base64encode变成base64字符串

Payload

  • 存储真正需要传递的信息、如用户ID、用户名等
  • 还包含元数据、如过期时间、发布人等
  • 与Header不同,Payload可以加密,而不是可以进行简单的base64encode 确切说是base64urlencode,忽略最后等号把中划线变成下划线

Payload编码前后

第八章第二节Node.js开发仿知乎服务端 深入理解RESTful API_第3张图片

Signature

  • 对Header和Payload部分进行签名
  • 保证Token在传输的过程中没有被篡改或者损坏
  • 头部+有效载荷+密钥字

Signature算法

第八章第二节Node.js开发仿知乎服务端 深入理解RESTful API_第4张图片

第八章第二节Node.js开发仿知乎服务端 深入理解RESTful API_第5张图片

你可能感兴趣的:(第八章第二节Node.js开发仿知乎服务端 深入理解RESTful API)