关于JWT令牌结构的解释

时间:2018-04-16 15:31:18

标签: jwt

我正在尝试了解JWT令牌的使用情况,但我对理论部分感到迷茫。

我对JWT Tokens结构有一些疑问,为了让这个问题成为新用户的一种文档,为它提供一个逻辑顺序,我会在下面用粗体编写它们我列出了一个JWT示例内容。

我也将在问题的最后总结它们


“经典”JWT令牌的组成如下:

[HEADER]。[PAYLOAD]。[签名]

详细说明:

标题

{
  "alg": "HS256",
  "typ": "JWT"
}

其中包含以下字段:

  • ALG =加密algorythm(使用默认的HS256可能没问题)
  • TYP =简单地告诉它是JWT

PAYLOAD

{
  "sub": "1234567890",
  "name": "MrJohnDoe",
  "iat": 1516239022
}
  • SUB =什么是SUB?你能告诉我一个常见用途的例子吗?
    请参阅下面的@CassioMazzocchiMolin答案
  • SUB =是一个可选参数。它是令牌的主题。 (学分:@CassioMazzocchiMolin)
    根据:Where to store user id in jwt看起来您可以使用它来存储您的用户ID。
  • NAME =用户名
  • IAT = 令牌到期时间。它用ms表示吗?
    感谢@jps和@JeanRostan在下面的评论中。
    • IAT =令牌创建日期和时间,以unix时间戳表示。

SIGNATURE

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),

secret

)
  • 究竟是什么“秘密”?我应该使用用户密码作为密码吗?
    感谢@jps在下面的评论中。
    • SECRET =服务器只知道唯一密钥。不要混淆当前的用户密码,这个密码永远不应该用于此!

1 个答案:

答案 0 :(得分:4)

  

什么是sub?能否请您举例说明常见用途?

sub声明标识了作为JWT主题的主体。在其他方面,它可以保存您向其颁发令牌的用户的用户名。

来自RFC 7519

  

4.1.2. "sub" (Subject) Claim

     

sub(主题)声明标识了作为主体的主体   JWT的主题。 JWT中的声明通常是声明   关于这个问题。主题值必须是作用域   在发行人的背景下本地独特或全球独特。   该权利要求的处理通常是特定于应用的。该   sub值是包含StringOrURI的区分大小写的字符串   值。使用此声明是可选的。