jwt跨域鉴权 | 青训营笔记

204 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第三篇笔记。

1.什么是JWT
JWT全称JSON Web Token,与普通Token一样都是访问资源的令牌,都可以记录用户信息,都是只有验证成功后才可以获取信息。它是一种开放标准,定义了一种紧凑而独立的方式,用于在各方之间作为JSON对象安全地传输信息。此信息是可以验证和信任的,因为它是经过数字签名的。JWT 的用户认证流程颇具优势,将需要使用到的用户数据等信息放入 JWT 中,每次请求都会自动携带,只要保证密钥不泄露,JWT 就无法伪造。
不同的是普通的Token服务端验证Token信息要进行数据的查询操作;JWT验证token就不用,在服务端使用密钥校验就可以,不用数据库的查询。
JWT工作流程:

JWT.png jwt生成的token是由三段字符串组成的,并且用.连接起来。
(1)第一段字符串,HEADER,内部包含算法和token类型.json转换成字符串,然后做base64url加密

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

(2)第二段字符串,playload,自定义值,json转换成字符串,然后做base64url加密

{
   "id": "123456",
   "name": "hhhh",
   "exp": 12231231 #超时时间
}

(3)第三段字符串:第1,2部分的明文拼接起来,对前2部分密文进行HS256加密+加盐,然后对加密后的密文再做base64url加密
后端需要对token进行token校验:
第一步:对token进行分割
第二步:对第二段进行base64url解密并获取playload信息,检测是否超时
第三步:把第一二段拼接,再次进行HS256加密+加盐,密文如果等于base64url解密,表示token未被修改过,认证通过。