zoukankan      html  css  js  c++  java
  • JWT笔记

    JWT是一个无状态登录的技术.所谓无状态,是指和传统的session技术相比,服务器端不需要存储用户的信息.在JWT技术中,agent向server请求一个Token.

    这个Token由三部分组成,head, playload,signature.三个部分由"."隔开.下面分别解释这三个部分的作用.

    1.head

    head中主要存储了这个Token所采用的加密算法.

    2.playload

    playload中存储的是这个token的有效信息.例如某个用户User1想要向服务器请求某个资源.那么当他向服务器请求资源时,他所附加的token中必然会存储这个

    用户的身份信息,这个身份信息就是存储在playload中的.

    3.signature

    signature是用来验证这个Token有效性的.下面会详细说明.

    用一个例子来说明JWT的工作过程:

    a.用户User1向服务器请求一个Token,其中包含了用户名User1, 过期时间,签发时间等信息.

    b.服务器收到用户User1的请求后,首先用BaseURL64编码将用户请求中所包含的用户名,过期时间,签发时间等信息转化为一个字符串.

     注意这个字符串是没有加密的.BaseURL64编码只是一个简单的映射,你可以理解为他就是明文.

    c.服务器根据指定的加密算法生成signature,例如:

      RSASHA256(base64UrlEncode(header) + "." + base64UrlEncode(playload), publicKey, privateKey)

     这里publicKey和privateKey都是服务端事先定义好的秘钥.服务器将得到的signature和head,playload拼接在一起返回给用户.

    d.当用户想要访问某个资源的时候,它将从服务器哪里获得的Token附着在http请求的头部.

    e.服务器端收到用户的请求后,将Token从http请求的头部取出,然后用秘钥对这个Token的signature进行解密.

    如果解密的结果与playload的内容一致,那么这个token就是有效的.否则这个Token就是无效的.

    也就是说,JWT中存储的信息是明文,任何人只要得到Token就可以获取里面的信息.但是恶意用户无法修改Token中所存储的信息.

    服务器端会验证它所收到的Token信息是否遭到篡改.

    Ref: https://jwt.io/

  • 相关阅读:
    帮朋友写的两篇文章
    与疯姐的对话
    实现C(i,j)=A(m,n,w)+B(m,n)
    误差处理相关
    http://blog.sina.com.cn/s/blog_4aae007d0100inxi.html
    全局变量和局部变量
    Yeelink:将复杂的传感器以极简的方式组到同一个网络内
    基站分布:GDOP
    C++学习路线图
    Matlab中三点确定质心
  • 原文地址:https://www.cnblogs.com/elnino/p/9107609.html
Copyright © 2011-2022 走看看