zoukankan      html  css  js  c++  java
  • 学习JWT

    定义

    JWT(Json Web Token)广义上是一个标准名称,狭义上是指用来传递token的字符串。

    结构

    JWT由三个部分组成:header(头部)、payload(载荷)和signature(签名)。

    • header:描述JWT最基本信息,如类型(type)和签名所用的算法(algorithm)

    {

    "alg": "HS256",

    "typ": "JWT"

    }

    • payload:用来承载要传递的数据,它的json结构实际上是对JWT要传递的数据的一组声明,这些声明被JWT标准称为claims,它的一个“属性值对”其实就是一个claim,每一个claim的都代表特定的含义和作用。

    {
    "iss": "Online JWT Builder",

    "exp": 1448333419,

    "aud": "www.example.com",

    "sub": "jrocket@example.com",

    "Role": [ "Manager", "Project Administrator" ]

    }

    根据JWT的标准,这些claims可以分为以下三种类型: a. Reserved claims(保留,JWT标准规定的)b.Public claims c.Private claims(自定义的claims)。
    把这个json结构做base64url编码之后,就能生成payload部分的串.

    • signature:签名是把header和payload对应的json结构进行base64url编码之后得到的两个串用英文句点号拼接起来,然后根据header里面alg指定的签名算法生成出来的。

    验证过程

    • 首先把header做base64url解码,得到JWT用的什么算法做的签名;
    • 然后用这个算法,再次用同样的逻辑对header和payload做一次签名,并比较这个签名是否与JWT本身包含的第三个部分的串是否完全相同,只要不同,就可以认为这个JWT是一个被篡改过的串,自然就属于验证失败了;
    • 完成解码并验证签名通过后,对payload中的claim(exp、nbf、aud等)信息进行验证;
    • 全部通过后,根据获取的用户的角色权限信息,进行对请求的资源的权限逻辑判断;
    • 如果权限逻辑判断通过则通过Response对象返回;否则则返回HTTP 401。

    参考这里

    参考这里

  • 相关阅读:
    Python中变量的作用域
    Python中关于函数的介绍
    python列表中的赋值与深浅拷贝
    Python中关于集合的介绍及用法
    python中文件操作的六种模式及对文件某一行进行修改的方法
    python中文件操作的其他方法
    python中文件操作的基本方法
    python中字符串的一些用法
    python里字典的用法介绍
    小谈python里 列表 的几种常用用法
  • 原文地址:https://www.cnblogs.com/mercycnblog/p/9745111.html
Copyright © 2011-2022 走看看