一、什么是JWT
- JWT简介
- JSON网络令牌 是为了在网络应用环境间传递声明而指定的一种基于JSON的开放标准(RFC 7518)JWT是一个轻便的安全跨平台传输格式 定义了一个紧凑的自包含的方式用于通信双方之间以JSON对象行使安全的传递西悉尼 因为数字签名的存在 这些信息是可信的
- JWT官网: https://jwt.io/introduction
- session认证和token认证的区别
- session认证的步骤
- 客户端发起账号密码
- 服务端校验
- session认证存在的问题
- 存储,session保存到服务器端开销大
- 多台服务器之间的共享
- session认证的步骤
- token认证的步骤
- 客户端发起账号密码认证
- 服务端校验,正确后,生成一个token的字符串返回给客户端
- 客户端收到token后保存到本地,后续请求将token放到请求头一并发送
- 服务端收到token后,对token进行验证,判断是否合法
- JWT的构成
- header
- JSON字符串
- 保存JWT的元数据
- payload
- json字符串
- 保存有效信息
- 标准中注册的声明
- 公共的声明
- iss:发行人
- sub:到期时间
- aud:用户
- nbf:在此之前不可用
- iat:发布时间
- jti:JWT ID用于标识该JWT
- 私有的声明
- usrname
- id
- 公共的声明
- 标准中注册的声明
- signature
- 编码后的Header
- 编码后的Payload
- secret
- header
- JWT的使用
- 客户端
- 保存在localStorage
- Authorization:Bearer Token
- 服务端
- 对第一部分解码,得到Header
- 得到加密方式,使用这种加密方式和secrect对1、2加密,得到了一个签名,如果结果一致,则认为token合法
- 再对第二部分解码,得到对应的数据
- 客户端