码迷,mamicode.com
首页 > 其他好文 > 详细

JWT

时间:2021-02-02 10:33:43      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:客户端   base   acs   sign   数据   问题:   返回   ase   背景   

JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案

背景

  1. 跨域认证的问题:服务器集群/跨域的服务导向架构,传统的sessionid<->cookie式认证产生session共享问题
  2. 解决方案
    1. session数据写入持久层
    2. 服务器无状态,数据均保存在客户端

JWT

  1. 原理:服务器认证后,生成一个带有签名以防用户篡改的JSON对象返回给用户,之后用户与服务端通信的时候必须携带该JSON对象,服务器只靠这个对象认定用户身份
  2. 数据结构
    1. Header:描述JWT的元数据的Json对象,使用 Base64URL 算法转成字符串。
      1. alg:签名的算法,默认是 HMAC SHA256(写成 HS256)
      2. typ:令牌类型,JWT 令牌统一写为JWT
    2. Payload:用来存放实际需要传递的数据的JSON 对象,使用 Base64URL 算法转成字符串,默认不加密
      1. iss (issuer):签发人
      2. exp (expiration time):过期时间
      3. sub (subject):主题
      4. aud (audience):受众
      5. nbf (Not Before):生效时间
      6. iat (Issued At):签发时间
      7. jti (JWT ID):编号
    3. Signature:对前两部分的签名,防止数据篡改 -> 服务器指定一个密钥,使用 Header 里面指定的签名算法(默认是 HMAC SHA256)产生签名。算出签名以后,把 Header、Payload、Signature 三个部分拼成一个字符串,每个部分之间用"点"(.)分隔
            //公式
            HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
      
  3. 特点
    1. 默认不加密,用作信息交换是推荐加密
    2. JWT的有效期尽可能设置短,一旦签发无法废止或变更Token权限,因为服务器无状态

JWT

标签:客户端   base   acs   sign   数据   问题:   返回   ase   背景   

原文地址:https://www.cnblogs.com/xuanmingxi/p/14354358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!