jwt token的三个组成部分
时间: 2025-03-29 20:08:59 浏览: 26
### JWT Token 的组成结构
JSON Web Token (JWT) 是一种开放标准 (RFC 7519),用于在网络应用环境间安全地传输信息。JWT Token 主要由 **Header**、**Payload** 和 **Signature** 这三个部分组成,它们之间通过点号 (`.`) 分隔。
#### Header(头部)
Header 部分通常包含两部分内容:令牌的类型(即 `JWT`),以及所使用的签名算法(如 HMAC SHA256 或 RSA)。这部分会被编码成 Base64Url 格式[^4]。
例如:
```json
{
"alg": "HS256",
"typ": "JWT"
}
```
#### Payload(负载)
Payload 是 JWT 的主体内容部分,包含了声明(Claims)。这些声明可以传达关于实体(通常是用户)和其他数据的信息。声明分为三种类型:注册声明(Registered claims)、公共声明(Public claims)和私有声明(Private claims)。同样,这一部分也会被编码为 Base64Url 格式。
一个典型的 Payload 可能如下所示:
```json
{
"sub": "1234567890", // 主体(Subject)
"name": "John Doe", // 姓名
"iat": 1516239022 // 发行时间(Issued At Time)
}
```
#### Signature(签名)
为了验证消息是否被篡改,以及确保消息来自可信任的一方,JWT 使用签名来保护其完整性。签名是由编码后的 Header 和 Payload 数据,加上一个密钥,再通过指定的算法计算得出的结果。
签名的生成过程可以用以下伪代码描述:
```plaintext
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
```
最终,完整的 JWT 将呈现为这样的形式:
```plaintext
<base64url-encoded-header>.<base64url-encoded-payload>.<signature>
```
以下是 Python 中生成 JWT 的简单示例:
```python
import jwt
header = {"alg": "HS256", "typ": "JWT"}
payload = {
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
secret_key = "my_secret_key"
token = jwt.encode(payload, secret_key, algorithm="HS256", headers=header)
print(token)
decoded_token = jwt.decode(token, secret_key, algorithms=["HS256"])
print(decoded_token)
```
上述代码展示了如何利用 PyJWT 库创建并解码一个 JWT Token。
---
阅读全文
相关推荐

















