5 声明(Claims)
这一节说明客户端如何获取关于终端用户声明和验证事件。它还定义了一组标准的基本声明配置。预定义一组可请求的声明,使用特定的scope值或能用于请求参数中的个人声明。声明可以直接来自OpenID提供者或分布式来源。
5.1 标准声明(Standard Claims)
这个规范定义了一组标准的声明。他们可以请求的返回或用户信息的响应,此在 5.3.2节或在第二节中的ID Token。
sub string
在发行人终端用户的主体标识符。
name string
终端用户的全名,显示的形式包括所有名称部分,可能包括标题和后缀,根据终端用户的区域设置和偏好排序。
given_name string
名字(s)或终端用户的名字(s)。注意,在一些文化中,人们可以有多个名字; 都可以存在,名字被空格字符分开。
family_name string
姓(s)或终端用户的姓(s)。注意,在一些文化中,人们可以有多个家庭的名字或没有姓; 都可以存在,名字被空格字符分开。
middle_name string
终端用户的中间名(s)。注意,在一些文化中,人们可以有多个中间的名字; 都可以存在,名字被空格字符分开。还要注意,在一些文化中,中间的名字存在。
nickname string
终端用户的昵称可能是也可能不是与 given_name相同。例如,迈克的昵称可能是迈克尔的 given_name。
preferred_username string
简写名称由终端用户希望在RP中参考,如 janedoe 或 j.doe 。这个值可以是任何有效的JSON字符串包括等特殊字符 @ ,/或空格。RP不能要求这个值是独一无二的,此在 5.7节 讨论。
profile string
终端用户的概要文件页面的URL。这个Web页面的内容应该是关于终端用户的。
picture string
终端用户的概要文件的URL。这个URL必须引用一个图像文件 (例如,一个PNG、JPEG或GIF图像文件),而不是包含图像的Web页面。注意,这个URL应该具体参考概要文件终端用户的照片,适合显示在终端用户描述中,而不是由用户任意拍照。
website string
URL的终端用户的网页或博客。这个网页应该包含终端用户发布的信息 或表示终端用户隶属于一个组织。
email string
终端用户的首选电子邮件地址。其值必须符合 RFC 5322 addr-spec语法。RP不能信任这个值是独一无二的,此在 5.7节讨论。
email_verified boolean
True,如果终端用户的电子邮件地址已经验证,否则为false。当这个声明值为真,这意味着OP采取了积极的措施,确保这个电子邮件地址在执行验证时是由用户控制的。验证电子邮件地址的方法是上下文相关的,依赖于信任框架或操作者的合同协议。
gender string
终端用户的性别。值定义为女或男。当两个定义值都不适用时,可以使用其他值。
birthdate string
终端用户的生日,表示为一个 ISO 8601:2004 [ISO8601 - 2004] YYYY-MM-DD 格式。年可能是 0000年 ,这表明它是省略了。仅呈现年,YYYY 格式是允许的。请注意,根据底层平台的日期相关的功能,仅提供年可能导致不同的月和日,实现者需要考虑这个因素,以正确处理日期。
zoneinfo string
字符串,从zoneinfo (zoneinfo) 时区数据代表终端用户的时区。例如,欧洲/巴黎 或 美国/洛杉矶。
locale string
终端用户的语言环境,表示为 BCP47 [RFC5646]语言标签。通常是一个 ISO 639-1 Alpha-2 [ISO639 - 1] 语言代码的小写字母和一个 ISO 3166-1 Alpha-2[ISO3166 - 1] 的大写国家代码,由一个破折号。例如,en-US 、fr-CA.。兼容性注意:有些使用的是下划线作为分隔符,而不是一个破折号,例如,en_US 依赖方,可以选择接受这种语言的语法。
phone_number string
终端用户首选的电话号码。E.164 (E.164) 建议格式的声明,例如,+ 1(425)555-1212 或 +56 (2) 687 2400。如果电话号码包含一个扩展,建议使用表示 RFC 3966 [RFC3966]扩展语法,例如,+1 (604) 555-1234;ext=5678。
phone_number_verified boolean
True,如果终端用户的电话号码被验证;否则false。当这个值为真时,意味着OP采取了积极的措施确保这个电话号码是由用户控制的执行验证。验证电话号码方式是上下文相关的,依赖于信任框架或操作者的合同协议。当为真时,phone_number 声明必须在E.164格式和任何扩展必须在RFC 3966格式表示。
address JSON object
终端用户的首选邮政编码。地址一个JSON (RFC4627) 结构,包含部分或全部5.1.1节中定义的成员 。
updated_at number
最后一次终端用户更新时间的信息。它的值是一个JSON的数字代表的秒数 1970 - 01 - 01 T0:0:0Z UTC,以来的日期/时间来衡量。
5.1.1 地址声明(Address Claim)
地址声明代表一个实际邮寄地址。其实现时,可能只返回的一个子集,一个地址部分信息 ,这取决于信息可用性和终端用户的隐私偏好。例如,可能不会返回更细粒度的国家和地区地址信息。
实现可能仅返回一个单独字格式化字串的完整的地址,或者他们可能会返回单个组件,使用其他的子字段,字段 或者他们可能返回的。如果两个变体都返回,他们应该描述的是相同的地址,格式化指示如何处理组件字段组合。
formatted
完整的邮寄地址,格式化显示或使用邮件标签。这个字段可能包含多个行,以换行隔开。换行可以表示为一对回车/换行(“\ r \ n”)或一个换行字符(“\ n”)。
street_address
完整的街道地址的组件,其中可能包括门牌号、街道名称、 邮政信箱,多行扩展的街道地址信息。这个字段可能包含多个行,以换行隔开。换行可以表示为一对回车/换行(“\ r \ n”)或一个换行字符(“\ n”)。
locality
本地化:城市或本地组件。
region
区域:国家,省,县或地区组件。
postal_code
邮政编码或邮政编码组件。
country
国家名称组件。
5.1.2 附加声明(Additional Claims)
虽然本规范仅将一小部分声明定义为标准声明,其他声明可以与标准声明一起使用。当使用这样的声明,建议 collision-resistant名称用于声明的名字,如JSON Web Token(JWT) JWT规范中描述的那样。另外, 在JWT规范中所描述的命名不太可能出现冲突时,私有的声明可以安全地使用。或者,如果特定的附加声明将有广泛和普遍适用性,则可以根据JWT规范以注册声明那样进行注册。
5.2声明语言和脚本(Claims Languages and Scripts)
人类可读的声明值和参照人类可读声明值,可能出现在多种语言和脚本中。对于特定语言和