jwt 相关介绍

65 阅读2分钟

1 什么是JWT

JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权;它是前后端分离开发方式下,权限校验的标准解决方案。

JWT的token包含三部分数据:

  • Header:头部,通常头部有两部分信息:

    • 声明类型,这里是JWT
    • 加密算法,自定义

我们会对头部进行base64加密(可解密),得到第一部分数据

  • Payload:载荷,就是有效数据,一般包含下面信息:

    • 用户身份信息(注意,这里因为采用base64加密,可解密,因此不要存放敏感信息)
    • 注册声明:如token的签发时间,过期时间,签发人等

​ 这部分也会采用base64加密,得到第二部分数据

  • Signature:签名,是整个数据的认证信息。一般根据前两步的数据,再加上服务的的密钥(secret)(不要泄漏,最好周期性更换),通过加密算法生成。用于验证整个数据完整和可靠性

JWT优点(无状态登录的优点):

  • 服务端不保存任何客户端请求者信息

  • 客户端的每次请求必须携带token(token--jwt),通过token信息识别客户端身份

  • 客户端请求不依赖服务端的信息,任何多次请求不需要必须访问到同一台服务

  • 服务端可以任意的迁移和伸缩

  • 减小服务端存储压力

JWT的缺点:

  • 一旦颁发,无法收回,只能等待过期,自动收回
  • 敏感信息不要放在token

2 项目中是如何使用JWT的?

分为两大步:

第一步:颁发token

1、用户通过用户名和密码进行身份认证

2、身份认证通过,生成token,返回给客户端

3、客户端保存token

第二步:校验token

1、每次请求的时候,将token携带到服务器

2、gateway对token进行校验,校验通过,则放行,校验失败,则拦截