JWT要点备忘录

自我简介:4年导游,10年程序员,最近6年一直深耕低代码领域,分享低代码和AI领域见解。

JSON Web Token 缩写 (JWT),以加密后的JSON对象传输信息

应用场景
  1. 授权登录(SSO)
  2. 信息交换
构成

包含三部分,以.分割

  • Header(头部)
  • Payload(负载)
  • Signature(签名)

常见形式:xxxxxx.yyyyyy.zzzzzz

实例

复制代码
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ

Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

Payload: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ

Signature: cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ

字符串通过Base64解码后得到如下信息:(所以隐秘信息不能放在这里!)

Header

复制代码
{
  "alg": "HS256", // 加密算法
  "typ": "JWT"    // token 类型
}

Payload

复制代码
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

JWT规定了7个官方字段供选用

iss (issuer) : 签发人 
exp (expiration time) : 过期时间 
sub (subject) : 主题 
aud (audience) : 受众 
nbf (Not Before) : 生效时间 
iat (Issued At) : 签发时间 
jti (JWT ID) : 编号

开发者也可以自己指定字段和内容

Signature

复制代码
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)

通过签名算法 HMACSHA256(Header里指定) 得到的签名字符串:

cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ

其中:secret 密钥由服务器指定,不能泄漏给用户
传输途径

Http 请求头配置 Authorization

复制代码
Authorization: Bearer <token>

服务端获取token后可以 通过 srcret 验签比对,防止篡改

编解码示例图

学习地址

AI时代,对各行业的冲击力只会越来越大,随着AI大模型的竞赛,越来越多强悍的AI模型都会涌现,像软件开发行业的很多工作都会被取代。软件将不再是程序员的专属产物,会由AI创建很多的软件产品。

4年导游,10年程序员,深耕低代码领域6年,持续分享低代码和AI领域领域有价值的思考和沉淀,欢迎关注:winyh5

后续会推出:【挑战365天做 100 套常见的互联网系统】系列文章,让大家可以真实感受到低代码快速落地项目的可行性

相关推荐
J_Asia1 分钟前
如何exclude不必要的so文件?
前端
一鹿有你们~3 分钟前
面试题-前端如何解决跨域
前端·javascript·跨域
Sailing8 分钟前
👉 👉 Vue3 自定义 Hook:从入门到进阶(~~安静的阅读2分钟,相信我,这篇文章一定能给你启发)
前端·javascript·vue.js
南雨北斗15 分钟前
Vue3 v-html的用法
前端
爱学习的茄子23 分钟前
Function Call:让AI从文本生成走向智能交互的技术革命
前端·深度学习·openai
aol12124 分钟前
X6官方示例「数据加工DAG图」转为Vue版
前端·vue.js
南雨北斗25 分钟前
vue3 attribute绑定
前端
一枚前端小能手25 分钟前
🚀 主线程卡死用户要骂娘?Web Worker让你的应用丝滑如德芙
前端·javascript
小桥风满袖28 分钟前
极简三分钟ES6 - Promise
前端·javascript
breeze_whisper29 分钟前
当前端收到一个比梦想还大的数字:BigInt处理指南
前端·面试