惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
D
Docker
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
月光博客
月光博客
S
SegmentFault 最新的问题
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI

博客园 - 小默同学

C语言文件操作 makefile 文件的写法 tkinter教程 基本黑客技术 window下开机自启动.bat文件和后台启动.bat文件 django 用 uvicorn 部署 python 声音去噪处理 basis of PHP DBMA about mysql 免费文字转语音工具 折半查找python代码实现 c:\windows\temp\ccvjvr7w.o:problemfour.cpp:(.text+0x17): undefined reference to `std::basic_istream< - 小默同学 Android连接第三方模拟器 vscode下搭建springboot 一篇文章极速复习drf知识点 LCD1602代码记录 外部排序 {&quot;detail&quot;:[{&quot;loc&quot;:[&quot;body&quot;],&quot;msg&quot;:&quot;field required&quot;,&quot;type&quot;:&quot;value_error.missing&quot;}]} 防止win10系统把破解软件当成病毒自动删除keil的破解软件 ERROR 1366 (HY000): Incorrect string value: '\xC4\xE3\xBA\xC3' for column 'p - 小默同学
python jwt
小默同学 · 2023-02-02 · via 博客园 - 小默同学

jwt -> json web token 一般用于前后端分离项目的用户认证。

传统校验需要把token保存在服务端。而jwt不会保存在服务端,通过客户端给的token和算法进行验证。

jwt包括三段字符串,并用点分隔。

token可以放到url里面,放到请求头里面。

返回

第一个是类型,第二个是非敏感数据和时间,第三个是防止一和二被修改。

  1. 第一段字符串:HEADER,内部包含算法/token类型,json转化成字符串,然后做base64url加密,这一段是固定的。

    {
        "alg":"HS256",
        "typ":"JWT"
    }
    
  2. 第二段字符串:payload。放你想放的信息。json转化成字符串,然后做base64url加密,由于可以反解出来,所以不要放敏感信息。

    {
        "id":"14324123",
        "name":"asdfsa",
        "exp" : 1324234324   // 超时时间
    }
    
  3. 第三段字符串:

    1. 把1,2部分用”.“拼接起来
    2. 对前两部分进行HS256加密+加盐
    3. 对HS256加密后的密文再做base64url加密

验证

  1. 切割
  2. 从第二段里面拿到超时时间看是否超时。
  3. 第三段由于HS256不能解密,于是将一二段拼接再次进行HS256加密+加盐,与原来的base64解密的第三段进行比较。判断是否被篡改。

代码实现

安装:

pip install pyjwt

生成关键代码:

import jwt

result = jwt.encode(payload=payload, key=SALT)

校验关键代码:

import jwt

payload = jwt.decode(token, SALT, algorithms="HS256")

完整代码请见:https://pythonav.com/wiki/detail/6/67/