• 简单了解JSON Web令牌(JWT)


    什么是JWT

    JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。

    JWT的结构

    JSON Web Token由三部分组成,它们之间用圆点(.)连接。这三部分分别是:

    • Header
    • Payload
    • Signature

    所以,一个典型的JWT看起来是这样的

    xxxxx.yyyyy.zzzzz

    Header

    Header由两部分组成:

    • token的类型(JWT)

    • 算法名称(比如:HMAC-SHA256或者RSA等等)

    它看起来就会是这个样子

    {
        'alg': "HS256",
        'typ': "JWT"
    }
    复制代码

    然后使用Base64对这个JSON进行编码,就得到了JWT的第一部分

    Payload

    这部分就是我们存放信息的地方,我们可以把用户ID等信息放在这里。

    JWT规范里面对这部分有了比较详细的介绍,常用的有iss(签发者),iat(签发时间),exp(过期时间),sub(面向的用户),aud(接收方)。

    {
        "iss": "lion1ou JWT",
        "iat": 1441593502,
        "exp": 1441594722,
        "aud": "www.example.com",
        "sub": "example@163.com"
    }
    复制代码

    对payload进行base64编码得到 JWT 的第二部分

    注意,不要在JWT的payload或header中放置敏感信息,除非它们是加密的。

    Signature

    为了得到签名,我们需要前面经过base64编码的header和paylad,以及一个秘钥。签名算法是header中指定的那个。

    例如:

    HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
    复制代码

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

    JWT的实际运用

    JWT实际上只是一个规范,一个Token的规范。符合JWT规范的Token可以用于Authorization (授权)。

    用户首次登录,服务器会为其生成一个token,并返回给客户端。客户端接收到之后,存储下来,之后每次请求的请求头都会包含token。服务器收到请求,就会验证客户端发送过来的token。验证通过,就响应请求,否则就提示用户登录失效。

    符合JWT规范的token可以用于登录授权的原因是:

    • 当JWT的任一部分被修改的时候:服务器对前面两个部分进行签名,就会发现两次签名不一致

    参考文章

    五分钟带你了解啥是JWT

    JWT 介绍

  • 相关阅读:
    第08组 Alpha冲刺(4/6)
    2019 SDN阅读作业
    第08组 Alpha冲刺(3/6)
    2019 SDN上机第3次作业
    第08组 Alpha冲刺(2/6)
    答疑
    八、对抗样本1
    九、产生和防御对抗样本的新方法 | 分享总结--廖方舟(论文11)
    02-NLP-08-条件随机场与应用
    02-NLP-07-词向量及相关应用
  • 原文地址:https://www.cnblogs.com/lyck/p/13763463.html
Copyright © 2020-2023  润新知