zoukankan      html  css  js  c++  java
  • 浅谈JWT。

    本篇主要分享的是JWT的基础的知识点和token的生成,生成使用的加密算法是ES256。

    缘由:

    • 最近在工作中处理的业务是和Apple交互的,由于Apple那边的规定每次请求需要携带token,来证明身份。我研究了一下JWT,也是有一些自己的理解,拿出来分享,希望可以给看到的人一些帮助。

    Apple给出的生成token的URL:

    https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests

    JWT的官方:

    https://jwt.io

    理解:

    1. JWT只是一个简称,全称是:Json Web Token,JWT是由头部、载荷、签名三部分组成拼接的方式用.,作为分割。
           Header 头部:用来描述该JWT的基本信息,头部包含了两部分(1、token的类型,加密的方式。)
           Payload 载荷:用来存放其他信息。如:ID,token过期时间,iss签发者,这类信息。
           Signature 签名:将头部和载荷使用base64编码过后,用.拼接(头部在前),然后我们会将拼接后的字符串。使用HS256或者其他的加密算法进行加密。加密的过程中,需要提供一个密钥。 最后生成最后一部分字符串,就是签名。签名还有另一种作用,防止信息被篡改。头部和载荷使用都是base64进行编码的,所以安全程度并不高,如果有人拦截了信息,并篡改了我们传递中的信息,并且新生成了一个JWT。那么我们接收到的jwt签名就是不一样的。
    2. JWT优势和劣势:
           优势:JWT想比较session,session的验证用户方式是,将用户的信息存入服务器端,所以会占据大量的内存。而JWT的方式确实将用户的信息分散到客户端,可以减轻服务器内存的压力,虽然JWT会让服务器有一些计算的压力,但是这些计算压力相比起来内存占用,就不算什么了。
           劣势:JWT一旦生成,只有过期时间到了,这个token才能无效,及时中间不想使用了,这个token依旧有效。
    3. JWT的工作流程:
           1、浏览器发起请求登陆。2、服务端验证身份,根据算法,将用户标识符打包生成 token, 并且返回给浏览器。3、浏览器发起请求获取用户资料,把刚刚拿到的 token 一起发送给服务器。4、服务器发现数据中有 token,验明正身。5、服务器返回该用户的用户资料。

    生成JWT:

  • 相关阅读:
    《神经网络论文精读》
    刻意练习
    马斯洛模型
    MRP执行计划列表(禁用)
    生产齐套分析
    BZOJ 3589: 动态树 树链剖分+线段树+树链的并
    CF1043F Make It One 容斥+dp+组合
    CF1073D Berland Fair 二分+线段树
    BZOJ 5084: hashit 后缀自动机(原理题)
    BZOJ 3991: [SDOI2015]寻宝游戏 树链的并+set
  • 原文地址:https://www.cnblogs.com/kaka007/p/15749166.html
Copyright © 2011-2022 走看看