JSON web token@04#JWT Claims

来源:互联网 发布:mac不要开机密码 编辑:程序博客网 时间:2024/06/10 23:57

4. JWT Claims

JWT Claims Set 表示一个 JSON 对象,它的成员是 JWT 传输的 claims。JWT Claims Set 中的 Claim Names MUST 是唯一的; JWT 解析器 MUST 拒绝拥有重复 member name 的 JWTs,或者使用 JSON 解析 只返回 重复的成员 name 的最后一个词汇,就像规范 ECMAScript 5.1 [ECMAScript] 的第 15.12 章节描述的那样。

一个 JWT 包含的 claims 必须是一组有效的,依赖上下文的。这方面的描述超出了本规范的范围。JWTs 特定的 applications 将要求实现某种特定的方法能够明白和处理某些claims。然而,缺乏某些要求,所有的 claims, 在实现时,如果不明白它的一生,就 MUST 被忽略。

这里有三种类型的 JWT Claim Names: Registered Claim Names, Public Claim Names, 和 Private Claim Names。

4.1. Registered Claim Names

下面的 Claim Names 是在 IANA “JSON Web Token Claims” 登记的,在章节 10.1. 中约定俗称。就一切情况而论,下面定义的 claims 并不要求强制使用或实现。 而是在开始的时候提供一组使用的,有帮助的 claims。 Applications 使用 JWTs 应当定义他们使用哪些特定的claims,使用时是 required 还是 optional。所有的 names 都是简短的,因为 JWTs 的核心目标是表达形式简洁紧凑。

4.1.1. “iss” (Issuer) Claim

“iss” (issuer) claim 定义了发布这个 JWT 的当事人。 如何处理这个 claim 是通常的应用程序指定。 “iss” 的值是大小写敏感的字符串,包含一个 StringOrURI 值。使用这个 claim 是 OPTIONAL。

4.1.2. “sub” (Subject) Claim

“sub” (subject) claim 定义了这个 JWT 的 subject。JWT中的 claims 通常是关于 subject 的陈述。subject 的值 MUST 是: issuer 上下文中的 scpoed,是本地唯一的,或者全局唯一的。如何处理这个 claim 通常是应用程序指定。”sub” 的值是大小写敏感的字符串,包含一个 StringOrURI 值。使用这个 claim 是 OPTIONAL。

4.1.3. “aud” (Audience) Claim

“aud” (audience) claim 在 JWT 中用来标识收件人。每个打算处理 JWT 的当事人 MUST 在 audience claim 中用值来识别自己。如果有这个 claim,但处理这个 claim 的当事人无法用它的值识别自己,那么 MUST 拒绝这个JWT。 在一般情况下,”aud” 的值是有区分大小写的字符串构成的数组。每个字符串都包含一个 StringOrURI 值。在特殊情况下,当 JWT 只有一个 audience,”aud” 的值可能是一个大小写敏感的字符串,它包含一个 StringOrURI 值。audience 的值的解译一般由应用程序指定。使用这个 claim 是 OPTIONAL。

4.1.4. “exp” (Expiration Time) Claim

“exp” (expiration time) claim 标识了失效时间,当达到或超过这个时间时。JWT MUST NOT 接受和处理,处理 “exp” claim 要求当前的 date/time MUST 在 “exp” claim 标识的 date/time 之前。考虑到时钟差, 实现者 MAY 留有一点余地,通常不超过几分钟。它的值 MUST 是一个 number 类型,包含一个 NumericDate 值。使用这个选项是 OPTIONAL。

4.1.5. “nbf” (Not Before) Claim

“nbf” (not before) claim 标识了时间点, 当早于这个时间点,JWT MUST NOT 被接受和处理。 处理这个 “nbf” claim 要求当前的 date/time MUST 在 “nbf” claim 所显示的 date/time 之后或者刚好在那个时间点。考虑到时钟差,实现者 MAY 留有一点余地,通常不超过几分钟。它的值 MUST 是一个 number 类型,包含一个 NumericDate 值。使用这个选项是 OPTIONAL。

4.1.6. “iat” (Issued At) Claim

“iat” (issued at) claim 标识了 JWT 所颁发的时间。这个 claim 能用于计算这个 JWT 已经使用的期限。它的值 MUST 是一个 number 类型,包含一个 NumericDate 值。使用这个选项是 OPTIONAL。

4.1.7. “jti” (JWT ID) Claim

“jti” (JWT ID) claim 作为 JWT 的唯一标识符。这个标识符的值 MUST 指定,在某种意思上确保相同的值在极小概率的情况下分配给另一个不同的数据对象。如果应用程序使用多个 issuers,MUST 避免不同颁发者所产生的值可能一样的冲突。”jti” claim 可以用于避免 JWT 被重复发送。”jti” 的值是大小写敏感的。使用这个选项是 OPTIONAL。

4.2. Public Claim Names

Claim Names 可以被使用 JWTs 的人定义,然而,为了避免冲突,任何新的 Claim Name 应当满足:要么是 IANA “JSON Web Token Claims” registry 里面(在 10.1 章节里面制定)注册的值,要么是一个 Public Name:一个能够防止命名冲突的 Name。在各种情况下,定义 name 或者 value 的人需要警惕他们定义的 Claim Name 在 namespace 中能够得到控制。

4.3. Private Claim Names

JWT 的生产者和消费者可以约定他们所使用的 Claim Names 就是 Private Names:这些 names 既不是 Registered Claim Names(4.1 章节),也不是 Public Claim Names(4.2章节)。 不像 Public Claim Names,在使用Private Claim Names 应当谨慎,以防止引起冲突。

0 0
原创粉丝点击