zoukankan      html  css  js  c++  java
  • JWT

    参考地址:https://www.jianshu.com/p/576dbf44b2aehttps://www.cnblogs.com/ls-2018/p/11858551.html

    1. 定义

    Json web token (JWT),用于认证身份

    2. cookie与session

    cookie与session的简介
    两者都是用于保持用户会话状态的
    1. cookie
    保存在用户浏览器,不安全,很容易被xss攻击
    2. session
    存放在服务器,会造成服务器的存储压力。配合cookie使用,放在cookie的sessionID键,容易被csrf攻击。

    3. 解决cookie和session的不足

    使用jwt
    1. 将token不放在cookie中返回,保存在用户浏览器
    2. token是通过加密计算出来的,当用户再次访问服务器,只需要通过计算用户的token是不是合法,就可以验证用户身份

    4. jwt示例及解析

    1. 由两个“.”分成三个部分
      第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature)
    1.1 完整的头部应该是这种格式。将头部base64加密即可构成第一部分
    typ是token类型,为JWT,alg为加密类型
    {
      'typ': 'JWT',
      'alg': 'HS256'
    }

     1.2 payload,base64加密后得到第二部分

    可包包含用户名,过期时间等,不能包含密码等敏感信息

    标准中注册的声明 (建议但不强制使用) :
    
    iss: jwt签发者
    sub: jwt所面向的用户
    aud: 接收jwt的一方
    exp: jwt的过期时间,这个过期时间必须要大于签发时间
    nbf: 定义在什么时间之前,该jwt都是不可用的.
    iat: jwt的签发时间
    jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。

     1.3 signature,base64加密后得到第三部分

    这个签证信息由三部分组成:
    header (base64后的)
    payload (base64后的)
    secret

    这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分

    注意:secret(加盐)是保存在服务端的,任何时候都不应该泄露给其他人,一旦泄露及时更换。

    1.4 示例
    Bearer代表Authorization头定义的schema ,除了Bearer,还有其它的一些 schemas ,是一种规范
    Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
  • 相关阅读:
    python异常触发及自定义异常类
    python for i in range(x)应用的问题
    季羡林 暮年沉思录
    再谈python的list类型参数及复制
    Python 列表推导式
    JavaScript:垃圾数据是如何自动回收的?
    JavaScript:this的用法
    JavaScript:浅谈闭包及其回收原则
    ES6:async / await ---使用同步方式写异步代码
    五大主流浏览器与四大浏览器内核
  • 原文地址:https://www.cnblogs.com/JackShi/p/15061863.html
Copyright © 2011-2022 走看看