• 浅谈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:

  • 相关阅读:
    大数据【一】集群配置及ssh免密认证
    安卓测试【三】adb简单命令及monkey使用
    安卓测试【二】eclipse离线安装ADT
    初始化对象的知识细节
    安卓测试【一】android sdk环境变量配置
    自动化测试用例排序(三个算法随机、贪心、额外贪心)
    java实现文件复制粘贴功能
    Javsssist用InsertAt()方法对语句插桩
    Javassist进行方法插桩
    JUnit手动设计测试方法以及与Randoop的自动生成测试的比较
  • 原文地址:https://www.cnblogs.com/kaka007/p/15749166.html
Copyright © 2020-2023  润新知