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

相关推荐
samroom30 分钟前
Vue项目---懒加载的应用
前端·javascript·vue.js·性能优化
手机忘记时间1 小时前
在R语言中如何将列的名字改成别的
java·前端·python
郝郝先生--1 小时前
Flutter 异步原理-Zone
前端·flutter
花开花落的博客2 小时前
uniapp 不同路由之间的区别
前端·uni-app
whatever who cares2 小时前
React 中 useMemo 和 useEffect 的区别(计算与监听方面)
前端·javascript·react.js
老兵发新帖2 小时前
前端知识-hook
前端·react.js·前端框架
t_hj2 小时前
Ajax的原理和解析
前端·javascript·ajax
蓝婷儿3 小时前
前端面试每日三题 - Day 29
前端·面试·职场和发展
小白上线*^_^*3 小时前
Vue——Axios
前端·javascript·vue.js
一直在学习的小白~3 小时前
HTML字符串转换为React元素实现
前端·react.js·html