JWT(Json Web Token)

时间:2019-10-19 11:33:33   收藏:0   阅读:75

JWT(Json Web Token) 的理解

格式Header.Payload.Signature

  1. Header: JWT 元数据, Json 对象, Base64Url编码

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

    alg表示Signature使用的算法, typ表示令牌类型, JWT 统一写为JWT

  2. Payload: 有效载荷, 包含令牌实际要传输的内容, Json 对象, JWT 规定了 7 个官方字段可供选择(非必选), 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: 签名, 字符串, 防止 JWT 被篡改
    使用Header中指定的算法, 如HS256表示HMAC SHA256算法, 再加上只有 JWT 签发方才知道的密钥secret, 对HeaderPayload进行签名, 计算公式如下:

    Signature = HMACSHA256((Base64UrlEncode(Header) + "." + Base64UrlEncode(Payload)), secret)

    这里面用到了Base64Url编码, 与Base64编码基本一样. 因为 JWT 可能会放到 URL 中, 所以前者中不能出现 +, /= 这 3 个字符. 所以要被替换掉: = 被省略, + 替换成 -, / 替换成 _.
    计算出签名后, 按照上面给出的格式将这三个部分拼接成字符串即可.

注意:

参考:

原文:https://www.cnblogs.com/magexi/p/11703144.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!