JWT(JSON Web Tokens )简洁说明

news/2026/1/26 18:28:23/文章来源:https://www.cnblogs.com/netlyf/p/19535070

JWT(JSON Web Tokens )简洁说明

实施 Token 验证的方法挺多的,还有一些标准方法,比如 JWT,读作:jot ,表示:JSON Web Tokens 。JWT 标准的 Token 有三个部分:
  • header(头部)
  • payload(数据)
  • signature(签名)

中间用“点”分隔开,并且都会使用 Base64 编码,所以真正的 Token 看起来像这样:

eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc

Header

每个 JWT token 里面都有一个 header,也就是头部数据。里面包含了使用的算法,这个 JWT 是不是带签名的或者加密的。主要就是说明一下怎么处理这个 JWT token 。

头部里包含的东西可能会根据 JWT 的类型有所变化,比如一个加密的 JWT 里面要包含使用的加密的算法。唯一在头部里面要包含的是 alg 这个属性,如果是加密的 JWT,这个属性的值就是使用的签名或者解密用的算法。如果是未加密的 JWT,这个属性的值要设置成 none

示例:

{"alg": "HS256"
}

意思是这个 JWT 用的算法是 HS256。上面的内容得用 base64url 的形式编码一下,所以就变成这样:

eyJhbGciOiJIUzI1NiJ9

Payload

Payload 里面是 Token 的具体内容,这些内容里面有一些是标准字段,你也可以添加其它需要的内容。下面是标准字段:

  • iss:Issuer,发行者
  • sub:Subject,主题
  • aud:Audience,观众
  • exp:Expiration time,过期时间
  • nbf:Not before
  • iat:Issued at,发行时间
  • jti:JWT ID

比如下面这个 Payload ,用到了 iss 发行人,还有 exp 过期时间这两个标准字段。另外还有两个自定义的字段,一个是 name ,还有一个是 admin 。

{"iss": "ninghao.net","exp": "1438955445","name": "wanghao","admin": true
}

 

使用 base64url 编码以后就变成了这个样子:

eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ

Signature

JWT 的最后一部分是 Signature ,这部分内容有三个部分,先是用 Base64 编码的 header.payload ,再用加密算法加密一下,加密的时候要放进去一个 Secret ,这个相当于是一个密码,这个密码秘密地存储在服务端。

  • header
  • payload
  • secret

const encodedString = base64UrlEncode(header) + "." + base64UrlEncode(payload); 
HMACSHA256(encodedString, 'secret');

处理完成以后看起来像这样:

SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc

最后这个在服务端生成并且要发送给客户端的 Token 看起来像这样:

eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuaW5naGFvLm5ldCIsImV4cCI6IjE0Mzg5NTU0NDUiLCJuYW1lIjoid2FuZ2hhbyIsImFkbWluIjp0cnVlfQ.SwyHTEx_RQppr97g4J5lKXtabJecpejuef8AqKYMAJc

客户端收到这个 Token 以后把它存储下来,下回向服务端发送请求的时候就带着这个 Token 。服务端收到这个 Token ,然后进行验证,通过以后就会返回给客户端想要的资源。

Signature

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1220271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计springboot校园学生健康管理与服务系统 基于Spring Boot的校园学生健康管理系统设计与开发 Spring Boot框架下的校园学生健康管理服务平台构建

计算机毕业设计springboot校园学生健康管理与服务系统29o2z9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。 随着社会的快速发展,人们对健康的关注度不断提升&…

国歌下载地址

https://www.gov.cn/guoqing/guoge/index.htm

Mysql8 允许远程登录

root@vultr:~/mysql8# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.0.29 MySQL Community Server - GPLCopyrig…

2026年10款主流项目管理软件精选推荐|高效落地团队协作

选对项目管理软件,能大幅降低沟通成本、精准把控项目进度,让团队从繁琐的手动跟进中解放出来。精选10款主流易上手的项目管理工具。 进度猫(轻量进度可视化工具) • 核心优势:甘特图思维导图双向联动,关键路…

告别 DIFY 构建卡顿 / 失败!巧用 Makefile 一键构建本地 WEB 镜像,附核心避坑指南

在基于 DIFY 进行二次开发的过程中,我们常常需要修改其前端 WEB 源代码(比如自定义页面样式、新增前端功能),修改完成后就需要重新构建 WEB 镜像来验证效果。 官方 DIFY 在根目录(包含 Makefile 文件的目录)封装了便捷的构建命令,无需我们手动编写冗长的docker build -…

36W电源方案LP3798ESM+LP10R060SD(12V3A)隔离型适配器/充电器电源方案分析(成本低、体积小)

LP3798ESM(ASOP6,准谐振 QR 反激 PWM 控制器) LP10R060SD(SOP7L,60V 同步整流 SR),构成 90–264Vac 全压输入、12V/3A(36W)隔离适配器 / 充电器方案,峰值效率…

基于springboot的机票预定系统的设计与实现 计算机毕业设计选题 计算机毕设项目 前后端分离【源码-文档报告-代码讲解】

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

java基础-InputStream 类

InputStream 是 Java 中所有字节输入流的抽象基类,位于 java.io 包中。它定义了读取字节数据的基本方法。一、核心特性抽象类 - 不能直接实例化,需要通过子类实现字节流 - 以字节(byte)为单位读取数据单字节读取 - 最基本的读取单…

2026年四川丧葬一条龙哪家强?四川公墓咨询、绵阳公墓推荐——孝爱领衔五大品牌,温情守护生命终章

引言 生命的落幕,需要庄重与温情的守护,殡葬服务的品质直接关乎逝者尊严与生者慰藉。在四川殡葬行业规范化发展的当下,如何挑选正规专业的丧葬一条龙服务,成为许多家庭的难题。为提供客观参考,我们依托行业协会标…

DSU

DSUstruct DSU {int n;vector<int> p, sz;DSU() : n(0) {}DSU(int n_) { init(n_); }void init(int n_) {n = n_;p.resize(n + 1);sz.assign(n + 1, 1);iota(p.begin(), p.end(), 0);}int find(int x) {if (x !=…

2026年架空地板厂家推荐:机房架空地板、水泥纤维网络架空地板、活动架空地板、玻璃防静电地板、硫酸钙防静电地板选择指南

2026西南地区架空地板优质厂家推荐榜根据《2026年中国防静电与架空地板行业发展白皮书》显示,2026年国内架空地板市场规模达180亿元,年复合增长率12.3%,其中西南地区以数据中心、智能工业园为代表的新兴场景需求增速…

BIT

BITstruct BIT {int n;vector<int> tr, vis;int tag;BIT(int _n = 0) { tag = 1; if (_n) init(_n); }void init(int _n) {n = _n;tr.assign(n + 1, 0);vis.assign(n + 1, 0);tag = 1;}int lowbit(int x) { retu…

Writeup:看雪AliCrackme_1

打开App需要输入密码,没加固直接看代码 //从图片中提取加密映射表 protected String getTableFromPic() throws IOException {InputStream is = null;String value = "";try {try {is = getResources().get…

从技术狂欢到价值兑现,AI大模型下半场怎么打?

接下来的一年&#xff0c;大模型赛道或将迎来更深度的整合与创新。 ©TMT星球原创 作者&#xff5c;黄燕华 日前&#xff0c;阿里AI大模型千问在杭州举行产品发布会引发业内广泛关注。 会上&#xff0c;阿里宣布千问全面接入淘宝、支付宝、高德、飞猪等业态&#xff0c;…

基于springboot的大学生志愿服务活动管理系统(源码+论文+部署+安装)

感兴趣的可以先收藏起来&#xff0c;还有在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望可以帮到大家。一、程序背景随着社会发展&#xff0c;志愿服务在各领域作用愈发凸显&#xff0c;大学生作为志愿服务主力…

毕设 stm32的火灾监控与可视化系统(源码+硬件+论文)

文章目录 0 前言1 主要功能2 硬件设计(原理图)3 核心软件设计4 实现效果5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉…

做自媒体数据复盘工具,导入平台播放量,点赞量,评论量,涨粉数,按日/周统计数据变化,分析高赞作品共性,生成复盘报告。

自媒体数据复盘工具 - 全栈开发实践 1. 实际应用场景描述 本工具专为短视频创作者、公众号作者、播客主播、直播达人等自媒体从业者设计&#xff0c;提供全方位的数据分析和复盘服务。随着自媒体行业的快速发展&#xff0c;内容创作者面临着激烈的市场竞争和用户注意力分散的挑…

爆火的Clawdbot全解析:功能、适配人群与国内本地化配置指南

近期一款名为Clawdbot的AI工具席卷科技圈&#xff0c;甚至引发Mac mini一机难求&#xff0c;它打破了传统AI“只回答不做事”的局限&#xff0c;成为能在本地设备24小时工作的“全职AI员工”。作为开源的自托管式个人AI助手&#xff0c;Clawdbot需通过指定通信通道接收指令&…

毕业 10 年学长忠告:这两件事别盲目跟风,AI 时代选对路比努力更重要

作为已经毕业 10 年的学长&#xff0c;今天想跟在校的学弟学妹们掏心窝子聊聊 —— 当年我踩过的坑&#xff0c;希望你们别再重蹈覆辙。尤其是在 AI 即将重塑职场的当下&#xff0c;有些选择真的会影响未来多年的发展轨迹。记得本科毕业时&#xff0c;我跟现在很多同学一样&…

2026年重庆公办职高哪家值得选 这些优质院校值得关注 择校指南

随着职业教育提质培优政策落地,2026年重庆公办职高的办学质量持续升级,工学一体化教学、产教融合深度合作等成为主流趋势。公办职高的专业适配性、实训条件直接影响未来就业与升学。重庆能源工业技师学院 基础信息:…