JWT报文
时间: 2025-05-27 09:30:32 浏览: 14
### JWT 报文结构
JWT 的全称是 JSON Web Token,它是一种基于 JSON 的开放标准 (RFC 7519),用于在网络应用环境间安全地将信息作为 JSON 对象传输。JWT 是一种紧凑且自包含的形式,能够通过 URL、POST 参数或者在 HTTP 头部中轻松传输。
#### 结构组成
JWT 主要由三个部分构成,分别是 Header(头部)、Payload(载荷)和 Signature(签名)。这三个部分之间用英文句号 `.` 进行分隔[^3]。
- **Header**:
Header 部分通常包含了两部分内容:Token 类型以及所使用的算法名称。例如 HMAC SHA256 或 RSA。这部分会被 Base64 编码以便于传输。
```json
{
"alg": "HS256",
"typ": "JWT"
}
```
- **Payload**:
Payload 中包含了声明的信息,这些声明又分为注册声明、公共声明和私有声明三种类型。常见的声明包括 iss(签发者)、exp(过期时间)、sub(主题)等。同样也会经过 Base64Url 转码处理。
```json
{
"sub": "1234567890",
"name": "John Doe",
"admin": true,
"iat": 1516239022
}
```
- **Signature**:
使用编码后的 header 和 payload 数据,再加上一个密钥,按照指定的算法计算生成签名。这个过程确保了数据未被篡改并验证发送方的身份。
计算公式如下所示:
```
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
```
最终形成的 JWT 字符串形式类似于这样:
```
<base64url-encoded-header>.<base64url-encoded-payload>.<signature>
```
### JWT 使用方法
当客户端希望访问受保护资源时,可以通过以下流程实现身份验证:
1. 客户端向服务端发起 POST 请求登录操作,并提交用户名密码等相关参数;
2. 如果认证成功,则服务器会创建一个新的 JWT 并将其返回给客户端;
3. 接下来每次请求敏感 API 时,都需要携带该 token 到 Authorization 请求头里去,格式为 Bearer 后面跟上实际的 token 值[^4];
示例代码片段展示如何设置 headers:
```javascript
const axiosInstance = axios.create({
baseURL: 'https://example.com/api',
timeout: 1000,
headers: {'Authorization': 'Bearer '+ jwt_token}
});
```
4. 当到达目标路由之前,框架内的中间件会对传入 tokens 解析校验有效性;如果合法则继续执行后续逻辑,否则拒绝访问或提示重新登陆。
### 注意事项
尽管 JWT 提供了一种简单有效的机制来进行用户状态管理,但在具体实施过程中仍需注意一些潜在风险点,比如防止 XSS 攻击窃取 cookies 存储下的 tokens, 设置较短的有效期限等等[^2]。
阅读全文
相关推荐



















