设为首页 加入收藏

TOP

OpenID Connect Core 1.0(五)使用授权码流验证(下)(一)
2019-09-17 17:36:42 】 浏览:58
Tags:OpenID Connect Core 1.0 使用 授权 验证

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

验证错误响应是一个OAuth 2.0授权错误响应消息,是RP发送授权请求的消息,由OP授权终结点的响应返回。

如果终端用户拒绝这个请求或终端用户验证失败,OP(授权服务器) 通过使用错误响应通知RP(客户端),其参数定义在 OAuth 2.0 [RFC6749] 4.1.2.1节中。与RFC 6749(HTTP错误返回给User Agent使用适当的HTTP状态码。)

除非重定向的URI无效,授权服务器返回的由客户端重定向的URI中指定的授权请求与适当的错误和状态参数。其他参数不应该返回。

除了 OAuth 2.0 4.1.2.1节定义的错误代码,该规范还定义了以下错误代码:

interaction_required

授权服务器需要某种形式与终端用户进行交互。当在认证请求中包含prompt参数值为none时,这个错误可能会返回,但在没有显示终端用户操作的用户界面减肥,验证请求不能完成。

login_required

授权服务器需要终端用户进行验证。当在认证请求中包含prompt参数值为none时,这个错误可能会返回,但在没有显示终端用户操作的用户界面减肥,验证请求不能完成。

account_selection_required

对终端用户是必需的,当选择一个会话在授权服务器。当终端用户没有选择会话,但终端用户又可能在授权认证服务器与不同账户关。当在认证请求中包含prompt参数值为none时,这个错误可能会返回,但在没有显示终端用户操作的用户界面减肥,验证请求不能完成。

consent_required

授权服务器需要终端用户同意。当在认证请求中包含prompt参数值为none时,这个错误可能会返回,但在没有显示终端用户操作的用户界面减肥,验证请求不能完成。

invalid_request_uri

授权请求返回的request_uri中返回包含一个错误或包含无效数据。

invalid_request_object

request参数包含一个无效的请求对象。

request_not_supported

OP不支持使用在第六节中定义的request参数。

request_uri_not_supported

OP不支持使用在第六节中定义的request_uri 参数。

registration_not_supported

OP不支持使用在7.2.1节中定义的 registration 参数   。

错误响应参数如下:

error

必需的。错误代码。

error_description

可选的。人类可读的ASCII 编码的文本描述的错误。

error_uri

可选的。包括额外的信息错误web页面的URI。

state

OAuth 2.0状态值。如果需要包括 state 参数授权请求。设置从客户端收到的值。

当使用授权码流,添加到重定向查询组件的URI的错误响应参数,除非指定不同的响应模式。

下面是使用错误响应的一个非规范化的例子 (换行仅表达显示目的):

  HTTP/1.1 302 Found

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

    error=invalid_request

    &error_description=

      Unsupported%20response_type%20value

    &state=af0ifjsldkj

3.1.2.7验证响应验证(Authentication Response Validation)

当使用授权码流,客户端必须根据RFC 6749验证响应,尤其是4.1.2和10.12节。

 

3.1.3令牌终结点(Token Endpoint)

获得Access Token,ID Token,和可选的Refresh Token,RP(客户端)发送一个令牌请求给令牌终结点并获得令牌的响应。使用授权码流,如3.2节的 OAuth 2.0 (RFC6749) 所述。

与令牌通信终结点必须使用TLS。参看 16.17节 使用TLS的更多信息。

 

3.1.3.1令牌的请求(Token Request)

客户端发出一个令牌请求,出示其授权许可(授权码一种形式),为令牌终结点提供grant_type 值,就像OAuth 2.0 [RFC6749] 4.1.3节中 authorization_code 描述的一样。如果客户端是一个保密客户端,那么它必须使用验证方法验证令牌终结点注册的 client_id 值,如9节中描述一样。

客户端使用HTTP POST 方法和表单序列化参数发送给令牌终结点,在OAuth 2.0 [RFC6749] 13.2节 、4.1.3节中描述过。

下面是一个非规范化的令牌的请求:

  POST /token HTTP/1.1

  Host: server.example.com

  Content-Type: application/x-www-form-urlencoded

  Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW

  grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA

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

 

3.1.3.2请求令牌验证(Token Request Validation)

授权服务器必须验证令牌请求如下:

  1. 对客户端进行验证,如果是发布客户端凭据或者使用另一个客户验证方法,第 9节定义;
  2. 确保授权码发布给验证过的客户端。
  3. 验证授权码是有效的。
  4. 如果可能的话,验证授权码是以前没有使用过的。
  5. 确保 redirect_uri 参数值是和最初的授权请求的 redirect_uri 参数值是相同的。如果 redirect_uri 参数值是一个不存在的redirect_uri注册值时,授权服务器可能返回一个错误 (因为客户端应该包括该参数) 也可能不返回错误 (因为OAuth 2.0在这种情况下允许参数被省略)。
  6. 验证所使用的授权码者和OpenID Connect 验证的请求发出者 (因此ID Token将从令牌终结点返回)。

 

3.1.3.3成功的令牌响应(Successful Token Response)

从客户机收到和验证一个有效的和授权的令牌的请求,授权服务器返回包含一个ID Token和一个Access Token的成功响应。在OAuth 2.0 [RFC6749] 4.1.4节参数定义成功的响应。响应使用 application/json 元数据类型。

在使用OAuth 2.0 (RFC6750

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OpenID Connect Core 1.0(七)使.. 下一篇OpenID Connect Core 1.0(四)使..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目