qktools

读懂 JWT:结构、用途与安全要点

发布于 2026-06-06

登录后服务器怎么知道「你是你」?现代 Web 应用普遍使用 JWT 来传递身份信息。理解 JWT 的结构和原理,对开发和调试认证系统非常重要。本教程用通俗的方式带你读懂 JWT。

JWT 是什么

JWT 全称 JSON Web Token,是一种用于在各方之间安全传递信息的紧凑令牌格式。它最常见的用途是身份认证:用户登录后,服务器签发一个 JWT,之后客户端每次请求都带上它来证明身份。

三段式结构

一个 JWT 由三部分组成,用点号连接:Header(头部)、Payload(载荷)和 Signature(签名),形如 xxxxx.yyyyy.zzzzz。

Header 描述令牌类型和签名算法;Payload 存放声明(claims),如用户 ID、签发时间 iat、过期时间 exp;Signature 则用密钥对前两部分签名,用于防篡改。

Payload 不是加密的

一个关键误区:Header 和 Payload 只是 Base64Url 编码,并未加密。任何人拿到 JWT 都能解码看到 Payload 里的内容。

因此绝不能在 Payload 中存放密码、银行卡号等敏感信息。签名只能保证内容没被篡改,并不能保证内容保密。

签名如何防篡改

签名是用服务器掌握的密钥对 Header 和 Payload 计算得出的。如果有人改动了 Payload(比如把用户 ID 改成别人的),重新计算的签名就对不上,服务器据此判定令牌无效。

正因为验证签名需要密钥,纯客户端工具只能「解码查看」而无法「验证签名」,这是正常且安全的设计。

调试 JWT 的实用方法

调试时常需要查看 JWT 里到底装了什么。使用 qktools 的 JWT 解析工具,粘贴令牌即可在本地解码出 Header、Payload,并自动把过期时间转为可读时间、标注是否过期,令牌不会上传。

想进一步理解其中的 Base64Url 编码,可以阅读我们关于 Base64 的文章,或使用 Base64 编解码工具动手试一试。

相关工具