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 套常见的互联网系统】系列文章,让大家可以真实感受到低代码快速落地项目的可行性

相关推荐
陈随易3 小时前
在 VSCode 里,把项目一键部署到服务器
前端·后端·程序员
Highcharts.js3 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
To_OC3 小时前
我被 useState 坑了两次之后,终于把它的脾气摸透了
前端·javascript·react.js
鱼樱前端4 小时前
我用 Claude Code 后,编码效率翻 3 倍。但更值钱的是别的。
前端·后端·ai编程
_lucas4 小时前
给知识库网站接入AI问答
前端·ai编程·全栈
前端糕手5 小时前
前端面试题大全:JavaScript + Vue3 + React + TypeScript + 工程化 + 性能优化
前端
我不叫武6 小时前
一个用 Rust 写的离线编码查询桌面工具
前端
Web4Browser7 小时前
指纹浏览器 API 自动化怎么接:启动 Profile、获取 CDP 端点并连接自动化框架
前端·网络·typescript·自动化
Patrick_Wilson7 小时前
从 React 到 Flutter:写给前端的一张跨端知识地图
前端·flutter·react.js
颜酱7 小时前
06 | 把 meta_config 同步进 MySQL(生成阶段)
前端·人工智能·后端