设为首页 加入收藏

TOP

OpenID Connect Core 1.0(七)使用混合流验证(一)
2019-09-17 17:36:44 】 浏览:48
Tags:OpenID Connect Core 1.0 使用 合流 验证

3.3 使用混合流验证(Authentication using the Hybrid Flow)

本节描述如何使用混合流执行验证。当使用混合流(Hybrid Flow)时一些令牌从授权端点返回,另一些则从令牌端点返回。混合流中返回令牌的机制在OAuth 2.0多响应类型编码实践中指定[OAuth. responses]。

3.3.1 混合流程的步骤(Hybrid Flow Steps)

混合流程遵循以下步骤:

1、客户准备一个包含所需的验证请求的请求参数。

2、客户端发送请求到授权服务器。

3、授权服务器验证用户。

4、授权服务器获得用户同意/授权。

5、授权服务器将终端用户发送给回客户端一个授权码,根据响应类型,返回一个或多个额外的参数。

6、客户端使用的这个授权码到令牌终结点请求响应。

7、客户端接收到包含一个ID Token和Access Token的body响应。

8、客户端验证ID Token和检索终端用户的 Subject 标识符。

 

3.3.2 授权终结点(Authorization Endpoint)

当使用混合流程,使用授权的终结点,是以3.1.2节定义的授权码流程的一样的方式使用授权的终结点,除了在本节中指定的差异。

 

3.3.2.1 验证请求(Authentication Request)

验证请求是由3.1.2.1节中定义 ,除了以下使用的验证请求参数:

response_type

必需的。确定要使用的授权处理流的OAuth 2.0响应类型值,包括从使用的端点返回的参数。当使用混合流程,此值是“code id_token” ,“code token”,或“code id_token token”。这些值定义在 OAuth 2.0 Multiple Response Type Encoding Practices [OAuth.Responses]。

下面是一个使用混合流的非规范示例请求,该混合流将由用户代理发送到授权服务器,以响应客户机相应的HTTP 302重定向响应(换行仅为显示):

  GET /authorize?

    response_type=code%20id_token

    &client_id=s6BhdRkqt3

    &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb

    &scope=openid%20profile%20email

    &nonce=n-0S6_WzA2Mj

    &state=af0ifjsldkj HTTP/1.1

  Host: server.example.com

 

3.3.2.2 验证请求验证(Authentication Request Validation)

当使用混合流程,验证请求的验证方式与第3.1.2.2节中定义的授权代码流相同。

 

3.3.2.3 授权服务器验证用户(Authorization Server Authenticates End-User)

当使用混合流程,终端用户身份验证的执行方式与第3.1.2.3节中定义的授权代码流相同。

 

3.3.2.4授权服务器获得用户同意/授权(Authorization Server Obtains End-User Consent/Authorization)

当使用混合流程,最终用户同意的获得方式与第3.1.2.4节中定义的授权代码流相同。

 

3.3.2.5成功的验证响应(Successful Authentication Response)

当使用混合流程,以隐式流程3.2.2.5节中定义的同样方式验证响应,除了在本节中指定的差异。

这些授权终结点结果的使用方式如下:

access_token

OAuth 2.0Access Token。当 response_type 使用的值是 code token,或 code id_token token返回。(token_type 值也在同样的情况下返回。)

id_token

ID Token。当 response_type 使用的值是code id_token 或 code id_token token时返回。

code

授权码。当使用混合流时,其总是返回。

下面是一个非规范化成功的响应使用混合流程的例子(换行仅为显示):

  HTTP/1.1 302 Found

  Location: https://client.example.org/cb#

    code=SplxlOBeZQQYbYS6WxSbIA

    &id_token=eyJ0 ... NiJ9.eyJ1c ... I6IjIifX0.DeWt4Qu ... ZXso

    &state=af0ifjsldkj

 

3.3.2.6 验证错误响应(Authentication Error Response)

当使用混合流程,授权错误响应的方式与第3.1.2.6节中定义的授权代码流相同,除了在本节中指定的差异。

如果最终用户拒绝请求或最终用户身份验证失败,授权服务器必须在重定向URI的片段组件中返回错误授权响应,OAuth 2.0 (RFC6749) 4.2.2.1中定义和 OAuth 2.0多个响应类型编码实践 (OAuth.Responses) 中定义,除非指定不同的响应模式。

 

3.3.2.7 重定向URI片段处理(Redirect URI Fragment Handling)

当使用混合流程,重定向的URI参数处理片段与隐式流程3.2.2.7部分中定义请求相同。同时参照 15.5.3节中URI片段处理实现注意事项。

 

3.3.2.8 身份响应验证(Authentication Response Validation)

当使用混合流程,客户端必须验证如下响应:

1、验证的响应符合[OAuth.Responses]的第五节 。

2、遵循RFC 6749的验证规则,尤其是4.2.2和10.12部分。

3、遵循3.3.2.12验证规则,验证ID Token ,response_type 使用的值是“code id_token” 或“code id_token token”。

4、遵循3.3.2.9部分验证规则,验证IAccess Token ,当 response_type 使用的值“code token”或“code id_token token”。

5、遵循3.3.2.10部分规则,验证授权码,当 response_type使用的值是“code id_token ”或“code id_token”。

 

3.3.2.9 Access Token验证(Access Token Validation)

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇一个完全平均分布的固定长度随机.. 下一篇OpenID Connect Core 1.0(五)使..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目