2、ID Token(ID Token)

OpenID Connect主要是对OAuth 2.0 能够使得终端用户通过ID Token的数据结构进行验证。当客户端和潜在的其他请求声明,ID Token包含声明的安全令牌并能在授权服务器中验证一个终端用户。ID Token表现为一个JSON Web Token(JWT)令牌。

以下对于所有OAuth 2.0流程使用的被OpenID Connect使用的ID Token的声明:

iss

必需的。响应的发行者的发行标识符。iss的值是使用 https scheme 区分大小写的URL,包含scheme、host和可选的端口号和路径、组件和任何查询或片段组件。

sub

必需的。 Subject标识符。由客户端使用本地唯一的从不在发行给终端用户期间重新分配的标识符,例如,24400320 或 AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4 。它长度不能超过255个ASCII字符。sub的值是对大小写敏感的字符串。

aud

必需的。ID Token的消费者。作为消费值它必须包含在OAuth 2.0的依赖方的client_id中。它也可能包含其他消费者的标识符。在一般情况下,aud值是一个大小写敏感的字符串的数组。在常见的只一个消费者特殊情况,aud可能是一个单一大小写敏感的字符串值。

exp

必需的。在有效时间过期之后,ID Token不得接受处理。这个参数要求必须在当前日期/时间 到 过期日期/时间中列出的值。考虑到时钟不精确,实现者可能提供一个通常不超过几分钟大约值。exp值是一个JSON的数字,是从1970-01-01 t0:0:0z UTC,到某一日期/时间来度量的秒数。参看 RFC 3339 [RFC3339] 中关于日期/时间的详细信息和UTC的规定。

iat

必需的。JWT发布的时间。它的值是一个JSON值代表的秒数数字,代表从1970-01-01 t0:0:0z UTC至某一UTC日期/时间之间计算的。

auth_time

终端用户验证时间。它的值是一个JSON值代表的秒数数字,是从1970-01-01 t0:0:0z UTC至某一UTC日期/时间来计算的。当一个max_age请求设置或者当auth_time请求作为一个基本要求,那么这一声明就是必需的;否则,它是可选的。(auth_time 声明语义对应OpenID 2.0 PAPE (OpenID.PAPE) auth_time 响应参数。)

nonce

用于关联客户端会话ID Token字符串值,以减轻重播攻击。nonce值在验证请求ID Token过程中是不会修改。如果存在ID Token,客户端必须验证发送的nonce值和在验证请求参数发送达时的nonce值是否相等。如果nonce出现在验证请求中,授权服务器必须在ID Token认证请求中包含一个nonce值。授权服务器应该执行使用nonce相应的处理。nonce值是一个大小写敏感的字符串。

acr

可选的。验证上下文类参考。字符串指定验证上下文类的参考值,在满足验证识别时验证上下文类使用。值“0”表示终端用户验证不符合ISO/IEC 29115 ISO29115一级要求。例如,验证使用的浏览器cookie是其中之一,例子使用“0级”是合适的。认证与 0级不应该用于授权访问的任何有值的资源。(这相当于OpenID 2.0 PAPE (OpenID.PAPE) nist_auth_level 0)。acr是一个用绝对URI或一个RFC 6711 (RFC6711) 注册的名字; 注册名称不得使用一个和已经注册的有不同的意义。相关方使用此声明需要达成一致的意义值,这可能是上下文相关的。acr值是一个大小写敏感的字符串。

amr

可选的。验证方法引用。进行验证方法时用于验证的JSON数组标识符字符串。例如,这些值可能包含密码和OTP验证方式。amr声明定义中特定值的使用,超出了本规范的范围。相关方使用此声明需要达成一致意义值,这可能是上下文相关的。amr值是一个组大小写敏感的字符串。

azp

可选的。授权方——发行ID Token的一方。如果存在,它必须包含OAuth 2.0 客户ID的一方。Claim 只是在ID Token只有一个消费值,和消费者来源不同的授权方时需要。这可能包含在即使授权方是相同的唯一的消费者。azp 值是一个大小写敏感的字符串,包含一个StringOrURI值。

ID Token可能包含其他声明。使用时必须忽略任何不理解声明。参照 3.1.3.6 ,3.3.2.11 ,5.1 ,7.4部份规范定义的附加声明。

使用ID Token必须使用JES签名或分别使用JWS和JWE加密后签名(可选),从而提供认证的、完整性、不可抵赖性和可选,保密,在16.14节。如果ID Token是加密的,它必须签名然后加密,结果是一个嵌套JWT(JWT中定义) 。ID Token不得使用一个none作为alg值,除非响应类型没有从授权终结点返回ID Token (如在使用授权码流程) 和客户明确使用一个没有登记时间请求。

ID Token不应使用 JWS or JWE x5u,x5c,jku,or jwk Header Parameter字段。相反,应使用提前通过发现和注册参数的引用keys(第十节)。

下面是一个ID Token声明集的非规范化的例子(JWT声明集):

{

"iss": "https://server.example.com",

"sub": "24400320",

"aud": "s6BhdRkqt3",

"nonce": "n-0S6_WzA2Mj",

"exp": 1311281970,

"iat": 1311280970,

"auth_time": 1311280969,

"acr": "urn:mace:incommon:iap:silver"

}

OpenID Connect Core 1.0(二)ID Token的更多相关文章

  1. OpenID Connect Core 1.0(一)介绍

    IdentityServer4是基于OpenID Connect and OAuth 2.0框架,OpenID Connect Core 1.0是IdentityServer4最重要的文档 By 道法 ...

  2. OpenID Connect Core 1.0(九)声明(Claims)

    5 声明(Claims) 这一节说明客户端如何获取关于终端用户声明和验证事件.它还定义了一组标准的基本声明配置.预定义一组可请求的声明,使用特定的scope值或能用于请求参数中的个人声明.声明可以直接 ...

  3. OpenID Connect Core 1.0(六)使用隐式验证流

    3.2 使用隐式验证流(Authentication using the Implicit Flow) 本节描述如何使用隐式流程执行验证.使用隐式流程时,所有令牌从授权终结点返回:不使用令牌终结点返回 ...

  4. OpenID Connect Core 1.0(五)使用授权码流验证(下)

    3.1.2.6 验证错误响应(Authentication Error Response) 验证错误响应是一个OAuth 2.0授权错误响应消息,是RP发送授权请求的消息,由OP授权终结点的响应返回. ...

  5. OpenID Connect Core 1.0(四)使用授权码流验证(上)

    3.1 使用授权码流验证(Authentication using the Authorization Code Flow) 本节描述如何使用授权码流执行验证.当使用授权码流时,会从令牌终结点返回的所 ...

  6. OpenID Connect Core 1.0(三)验证

    OpenID Connect执行终端用户登录或确定终端用户已经登录的验证工作.OpenID Connect 使服务器以一种安全的方式返回验证结果.所以客户可以依靠它.出于这个原因,在这种情况下客户被称 ...

  7. OpenID Connect Core 1.0(七)使用混合流验证

    3.3 使用混合流验证(Authentication using the Hybrid Flow) 本节描述如何使用混合流执行验证.当使用混合流(Hybrid Flow)时一些令牌从授权端点返回,另一 ...

  8. OpenID Connect Core 1.0(八)从第三方发起登录

    在某些情况下,登录流程由一个OpenID提供者或其他方发起,而不是依赖方(RP).在这种情况下,发起者重定向到RP在发起登录终结点,RP的请求验证请求发送到指定的OP.这个发起登录终结点可以在RP深度 ...

  9. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

随机推荐

  1. PAT 1038. Recover the Smallest Number

    #include <iostream> #include <cstdlib> #include <vector> #include <algorithm> ...

  2. 小任务之Canvas绘制时钟

    背景图的绘制(大圆.数字.小圆点) 掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算,数学中关于sin cos的用法 圆的弧度为2*Math.PI 12个数字分得弧度每个为2*Math.PI/ ...

  3. html和css入门 (四)

    背景样式 背景颜色 属性名 background-color 属性值 合法的颜色的名,比如:red:十六进制值,比如:#ff0000:RGB 值,比如:rgb(255,0,0) 默认值 transpa ...

  4. [WC2016]挑战NPC

    Sol 这做法我是想不到\(TAT\) 每个筐子拆成三个相互连边 球向三个筐子连边 然后跑一般图最大匹配 这三个筐子间最多有一个匹配 那么显然每个球一定会放在一个筐子里,一定有一个匹配 如果筐子间有匹 ...

  5. Sencha Architect打开闪退问题修复

    删除以下位置的cache文件夹 C:\Users\Administrator\AppData\Local\Sencha\Sencha Architect 3.2\Cache bug解决参考 https ...

  6. C# 使用Guid类生成不重复的随机数

    什么是Guid GUID(全局唯一标识符)         全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID ...

  7. C#——Visual Studio项目中的AssemblyInfo.cs文件包含的配置信息

    Visual Studio程序集项目中的AssemblyInfo.cs文件中的内容 using System.Reflection; using System.Runtime.CompilerServ ...

  8. 二十一、如何导入svg图片

    svg就相当于字体,如何将生成的svg导入到自己的项目中去呢? 1.将类似下面的文件放入自己的项目中: 2.生成的svg中有一个style.css文件,将里面的内容拷贝到你的css中,然后更改上图的路 ...

  9. 个人发现的createProcess调用漏洞

    现在的杀毒软件都会杀掉c盘下的program.exe程序,所以某种意义上而言,这个漏洞算不上“漏洞”. 问题描述 眼睛护士版本:3.0.18.301存在createProcess调用漏洞. 详细说明 ...

  10. PHP 多图片上传实例demo

    upload.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...