OAuth 2.0授权码请求和响应

时间:2020-01-09 10:47:16  来源:igfitidea点击:

授权码授予总共包括2个请求和2个响应。授权请求+响应,以及令牌请求+响应。

授权请求

授权请求被发送到授权端点以获得授权码。以下是请求中使用的参数:

response_type必需。必须设置为code
client_id必需。注册客户端时,授权服务器分配的客户端标识符。
redirect_uri可选。客户端注册的重定向URI。
scope可选。请求的可能范围。
state可选(推荐)。需要传递给客户端请求URI的任何客户端状态。

授权回应

授权响应包含获取访问令牌所需的授权代码。以下是响应中包含的参数:

code必填。授权码。
state是必需的(如果存在于请求中)。与客户机在“ state”参数中发送的值相同(如果有)。

授权错误响应

如果授权期间发生错误,则可能会发生两种情况。

首先是,客户端未通过身份验证或者识别。例如,在请求中发送了错误的重定向URI。在这种情况下,授权服务器不得将资源所有者重定向到重定向URI。而是应将错误通知资源所有者。

第二种情况是客户端已正确验证,但其他失败。在这种情况下,以下错误响应将发送到客户端,包括在重定向URI中:

错误必需。必须是一组预定义的错误代码之一。请参见规范中的代码及其含义。
error_description可选。易读的UTF-8编码文本,用于描述错误。适用于开发人员,而不是最终用户。
error_uri可选。指向人类可读网页的URI,其中包含有关错误的信息。
state是必需的(如果存在于授权请求中)。与请求中的“ state”参数中发送的值相同。

令牌请求

一旦获得授权代码,客户端就可以使用该代码来获取访问令牌。这是访问令牌请求参数:

client_id必需。客户端应用程序的ID。
client_secret必需。客户端应用程序的客户端密码。
grant_type必需。必须设置为authorization_code
code必填。授权服务器接收到的授权代码。
redirect_uri必需,如果请求URI包含在授权请求中。然后必须相同。

令牌响应

访问令牌请求的响应是一个JSON字符串,其中包含访问令牌以及更多信息:

{ "access_token"  : "...",
  "token_type"    : "...",
  "expires_in"    : "...",
  "refresh_token" : "...",
}

" access_token"属性是授权服务器分配的访问令牌。

" token_type"属性是授权服务器分配的一种令牌。

expires_in属性是访问令牌过期的秒数,不再有效。访问令牌的到期是可选的。

refresh_token属性包含一个刷新令牌,以防访问令牌可能过期。一旦此响应中返回的令牌不再有效,就使用刷新令牌来获取新的访问令牌。