草庐IT

【翻译】4.1. 已注册的声明的名字

Halloworlds 2023-03-28 原文

原文链接: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的特别细节。

有关【翻译】4.1. 已注册的声明的名字的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  3. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  4. ruby-on-rails - 设计注册确认 - 2

    我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:

  5. ruby - Google-api-ruby-client 翻译 API 示例 - 2

    很高兴看到google代码:google-api-ruby-client项目,因为这对我来说意味着Ruby人员可以使用GoogleAPI-s来完善代码。虽然我现在很困惑,因为给出的唯一示例使用Buzz,并且根据我的实验,Google翻译(v2)api的行为必须与google-api-ruby-client中的Buzz完全不同。.我对“Explorer”演示示例很感兴趣——但据我所知,它并不是一个探索器。它所做的只是调用一个Buzz服务,然后浏览它已经知道的关于Buzz服务的事情。对我来说,Explorer应该让您“发现”所公开的服务和方法/功能,而不一定已经知道它们。我很想听听使用这个

  6. ruby - 如何使用 method_missing 动态声明方法? - 2

    我有一个ruby​​程序,我想接受用户创建的方法,并使用该名称创建一个新方法。我试过这个:defmethod_missing(meth,*args,&block)name=meth.to_sclass我收到以下错误:`define_method':interningemptystring(ArgumentError)in'method_missing'有什么想法吗?谢谢。编辑:我以不同的方式让它工作,但我仍然很好奇如何以这种方式做到这一点。这是我的代码:defmethod_missing(meth,*args,&block)Adder.class_evaldodefine_method

  7. ruby-on-rails - 如果特定语言环境中缺少翻译,如何配置 i18n 以使用 en 语言环境? - 2

    如果特定语言环境中缺少翻译,如何配置i18n以使用en语言环境翻译?当前已插入翻译缺失消息。我正在使用RoR3.1。 最佳答案 找到相似的question这里是答案:#application.rb#railswillfallbacktoconfig.i18n.default_localetranslationconfig.i18n.fallbacks=true#railswillfallbacktoen,nomatterwhatissetasconfig.i18n.default_localeconfig.i18n.fallback

  8. ruby-on-rails - 如何使用 globalize 和 rails 4 以一种形式显示所有翻译字段 - 2

    在使用rails4和https://github.com/globalize/globalize的情况下,我应该如何为我的模型编写表单?用于翻译。我想以一种形式显示所有翻译,如下例所示。我在这里找到了解决方案https://github.com/rilla/batch_translations但我不知道如何实现它。这个“批量翻译”是一个gem还是什么?以及如何安装它。EditingpostEnglish(defaultlocale)SpanishtranslationFrenchtranslation 最佳答案 批处理翻译gem很旧

  9. ruby-on-rails - 特征未注册 : attribute name - 2

    完成这个有困难。我正在使用seed.rb+factory_girl来使用rakedb:seed填充数据库。(我知道固定装置存在,但我想以这种方式完成,这只是一个示例,数据库将填充复杂的关联对象。)我的种子.rb:require'factory_girl_rails'["QM","CDC","SI","QS"].eachdo|n|FactoryGirl.create(:grau,nome:n)end还有我的/factories/graus.rbFactoryGirl.definedofactory:graudonomeendend但是当我运行时:rakedb:seed我得到:rakeab

  10. ruby-on-rails - 带有自定义处理器的 CarrierWave 未注册 - 2

    我正在使用carrierwave上传视频然后有一个名为thumb的版本,带有自定义处理器,可以获取视频并使用streamio-ffmpeg创建屏幕截图。视频和文件都已正确上传,但在调用uploader.url(:thumb)时我得到:ArgumentError:Versionthumbdoesn'texist!VideoUploader.rbrequire'carrierwave/processing/mime_types'require'streamio-ffmpeg'classVideoUploader5)File.renamethumb_path,current_pathendd

随机推荐