什么存储在 JWT 中

JWT RFC 建立了三类索赔:

  • **注册的声明,**如 subissexpnbf

  • **** IANA 注册的公共名称或名称的公开声明,其中包含的值应该是唯一的,如 emailaddressphone_number。查看完整列表

  • **** 在你自己的上下文和值中使用的私有声明可能会发生冲突

这些索赔都不是强制性的

JWT 是自包含的,应该避免使用提供必要数据的服务器会话来执行身份验证(不需要服务器存储和数据库访问)。因此,rolepermissions 信息可以包含在 JWT 的私人索赔中。

注册索赔

以下声明名称在 10.1 节建立的 IANA“JSON Web 令牌声明”注册表中注册

  • iss(发行人):确定发行 JWT 的委托人。
  • sub(主题):确定作为 JWT 主题的主体。必须是独特的
  • aud(观众):识别 JWT 的目标收件人(字符串数组/ uri)
  • exp(到期时间):标识到期时间(UTC Unix),之后你必须不再接受此令牌。它应该在发布之后。
  • nbf(不是之前):标识不允许接受 JWT 的 UTC Unix 时间
  • iat(发布于):标识发布 JWT 的 UTC Unix 时间
  • jti(JWT ID):为 JWT 提供唯一标识符。

{
    "iss": "stackoverflow",
    "sub": "joe",
    "aud": ["all"],
    "iat": 1300819370,
    "exp": 1300819380,
    "jti": "3F2504E0-4F89-11D3-9A0C-0305E82C3301"
    "context": {
        "user": {
            "key": "joe",
            "displayName": "Joe Smith"
        },
        "roles":["admin","finaluser"]
    }
}