JWT的标准声明

JSON Web Token (JWT) 中的标准声明(Registered Claims)是由 JWT 规范(RFC 7519)定义的一组预定义的名称,用于确保不同系统之间的互操作性。这些声明是可选的,但强烈推荐使用它们来提高 JWT 的通用性和可读性。

以下是 JWT 标准声明的列表及其含义:

标准声明

  1. iss (Issuer) - 发行者

    • 描述:标识声明该令牌的主体(通常是服务或系统)。
    • 示例:"iss": "https://auth.mycompany.com"
  2. sub (Subject) - 主题

    • 描述:代表该令牌的主题(通常是用户 ID 或其他唯一标识符)。
    • 示例:"sub": "user123"
  3. aud (Audience) - 接收方

    • 描述:指定接收此 JWT 的一方或多方。如果 JWT 包含多个接收方,则应是一个字符串数组。
    • 示例:"aud": ["https://api.mycompany.com"]
  4. exp (Expiration Time) - 过期时间

    • 描述:指定该 JWT 到期的时间戳(Unix 时间戳,单位为秒)。在此时间之后,该令牌将不再有效。
    • 示例:"exp": 1648723200 (表示 2022-04-01T00:00:00Z)
  5. nbf (Not Before) - 生效时间

    • 描述:指定该 JWT 在此时间之前不应被处理(Unix 时间戳,单位为秒)。
    • 示例:"nbf": 1648636800 (表示 2022-03-31T00:00:00Z)
  6. iat (Issued At) - 签发时间

    • 描述:指定该 JWT 的签发时间(Unix 时间戳,单位为秒)。
    • 示例:"iat": 1648636800 (表示 2022-03-31T00:00:00Z)
  7. jti (JWT ID) - JWT 唯一标识符

    • 描述:提供一个唯一的标识符,可用于防止重播攻击。每个 JWT 应该有唯一的 jti 值。
    • 示例:"jti": "a-1234567890abcdef1234567890abcdef"

使用示例

以下是一个包含多个标准声明的 JWT 载荷示例:

{
  "iss": "https://auth.mycompany.com",
  "sub": "user123",
  "aud": ["https://api.mycompany.com"],
  "exp": 1648723200,
  "nbf": 1648636800,
  "iat": 1648636800,
  "jti": "a-1234567890abcdef1234567890abcdef"
}

自定义声明

除了上述标准声明之外,JWT 还允许添加自定义声明(Private Claims),以满足特定应用的需求。例如,可以添加用户角色、权限等信息作为自定义声明。

示例:
{
  "role": "admin",
  "permissions": ["read", "write"]
}

注意事项

  • 安全性:虽然标准声明有助于提高 JWT 的通用性和可读性,但在设计时仍需考虑安全因素,如避免在 JWT 中存储敏感信息(即使经过签名和加密),以及正确设置过期时间 (exp) 和生效时间 (nbf) 来增强安全性。
  • 验证:在验证 JWT 时,通常需要检查标准声明的有效性,特别是 expnbf,以确保令牌未过期且在其有效期内。

通过合理使用这些标准声明,可以使 JWT 更加规范和易于管理,同时提高系统的安全性和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NEUMaple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值