JWT基础知识

1> JWT定义

JSON Web Token (JWT) 是一种开放的行业标准(RFC 7519),用于安全传送认证信息. 是目前流行的跨域认证的解决方案。

2> JWT数据结构

由三部分组成:

Header(头部) . Payload(负载) . Signature(签名)

 2.1> Header部分:

由Token类型 ("JWT") 和 算法名称 ("HS256"等)组成 ,再用Base 64对JSON编码。

 2.2>Payload部分:

由声明部分组成。声明有三种类型:Registered,Public,Private

  • Registered Claims: 预定义的声明,建议不是强制。

  例如:

  iss ( Issuer ) 签发者

       exp ( Expiration Time) 过期时间

       sub ( Subject ) 所面向的用户

       aud ( Audience ) 接收者

  • Public Claims: 可自定义任何信息,一般添加用户相关信息或业务需要信息
  • Private Claims: 提供者和消费者所共同定义的声明

注意:不要在JWT的payload或header中放置敏感信息

 2.3> Signature

签名是用于验证消息在传递过程中有没有被更改,并且,对于使用私钥签名的token,它还可以验证JWT的发送方是否为它所称的发送方。

附上官网用于校验JWT内容  https://jwt.io/

3> Cookie认证过程与JWT区别

  • Cookie认证
  1. 用户携带用户名和密码请求访问
  2. 服务器校验成功后,在session中保存相关数据(用户,角色,登录时间等相关信息)
  3. 服务器向用户返回一个session_id,写入cookie
  4. 用户每次请求都要通过cookie,将session_id传到服务器
  5. 服务器通过session_id,找到前期保存数据得知用户身份
  • JWT认证

  1. 用户携带用户名和密码请求访问
  2. 服务器校验用户凭据
  3. 应用提供一个token给客户端
  4. 客户端存储token,并且在随后的每一次请求中都带着它
  5. 服务器校验token并返回数据

Token认证优点:

1.支持跨域:Cookie是不允许跨域访问。

2.无状态:Token机制不需要存储服务端存储任何状态。

Token认证缺点:

 1.无法在使用过程中废止某个 token,或者更改 token 的权限

原文地址:https://www.cnblogs.com/sword88/p/11543155.html