【翻译】4.1. 已注册的声明的名字
原文链接:RFC 7519: JSON Web Token (JWT) 4.1. Registered Claim Names
前言:由于对JWT中的声明不太了解,所以翻译JWT官方文档中有关已注册的声明的部分。以下是正文。
下列声明的名字已在章节10.1确立的IANA“JSON网络令牌声明”注册中心注册。它们都不强制使用。使用JWT的应用程序应该定义自己使用的声明,以及这些声明是必需的还是可选的。声明的名字都很短,因为JWT的主要目标之一是紧凑。
4.1.1. “iss”(签发者)声明
“iss”(签发者)声明指明了JWT的签发者。不同的应用对此声明有不同的处理方式。“iss”的值是一个区分大小写的StringOrURI字符串。此声明不是必须的。
4.1.2. “sub”(主体)声明
“sub”(主体)声明指明了JWT的主体。JWT中的声明通常都是对此主体的描述。主体的值要么在签发者处惟一,要么全局惟一。不同的应用对此声明有不同的处理方式。“sub” 的值是一个区分大小写的字符串,此字符串包含一个StringOrURI值。此声明不是必须的。
4.1.3. “aud”(受众)声明
“aud”(受众)声明指明了JWT的解读者。每个要解读JWT的主体必须将自身写入受众声明。如果处理声明的主体发现JWT中包含“aud”声明且没在“aud”声明中找到与自身匹配的值,则必须拒绝该JWT。一般情况下,“aud”的值是一个区分大小写的字符串数组,每个字符串包含一个StringOrURI值。特殊情况下,当JWT只有一个受众时,“aud”值可以是一个区分大小写的字符串,包含一个StringOrURI值。不同应用可以按自己的方式解读受众的值。此声明不是必须的。
4.1.4. “exp”(过期时间)声明
“exp”(过期时间)声明指明了JWT的过期时间,在此时间后它不能再被处理。规范要求当前日期/时间必须在“exp”声明的过期日期/时间之前。由于时钟可能有偏差,实现者可以留有小小余地,通常不超过几分钟。它的值必须是一个包含NumericDate值的数字。此声明不是必须的。
4.1.5. “nbf”(生效时间)声明
“nbf”(not before)声明指明了此JWT能开始接受处理的时间。规范要求当前日期/时间必须在“nbf”声明的日期/时间之后或与之相等。由于时钟可能有偏差,实现者可以留有小小余地,通常不超过几分钟。它的值必须是一个包含NumericDate值的数字。此声明不是必须的。
4.1.6. “iat”(签发时间)声明
“iat”(签发时间)声明指明了JWT签发的时间。此声明可用于计算JWT的年龄。它的值必须是一个包含NumericDate值的数字。此声明不是必须的。
4.1.7. “jti”(JWT ID)声明
“jti”(JWT ID)声明为JWT提供唯一标识符。必须确保相同的值分配给不同数据对象的概率小到忽略不计;如果应用有多个签发者,多个签发者提供的值不能相同。“jti”声明可以防止JWT重播。“jti”的值是区分大小写的字符串。此声明不是必须的。
其他选译部分
2 术语
StringOrURI
一种有额外要求的JSON字符串值。额外要求是:可以使用任意字符串值,但是包含“:”字符的值必须是URI [RFC3986]。StringOrURI值在比较时要区分大小写,而且不需要转换或规范化。
NumericDate
一个JSON数值,表示从1970-01-01T00:00:00Z UTC到指定的UTC日期/时间的秒数,忽略闰秒。这相当于IEEE Std 1003.1, 2013版[POSIX. 1]定义的“自纪元以来的秒数”,每一天都是86400秒,而且,此值可以为非整数。参见RFC 3339 [RFC3339]了解日期/时间的一般细节和UTC的特别细节。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)