如何响应由于响应类型无效而失败的OAuth 2.0授权端点请求?

如何响应由于响应类型无效而失败的OAuth 2.0授权端点请求?,oauth,oauth-2.0,Oauth,Oauth 2.0,发件人: 如果资源所有者拒绝访问请求,或者请求因重定向URI丢失或无效以外的原因而失败,则授权服务器将通过向重定向URI的片段组件添加以下参数来通知客户端 发件人: 如果资源所有者拒绝访问请求,或者请求因重定向URI丢失或无效以外的原因而失败,则授权服务器通过向重定向URI的查询组件添加以下参数来通知客户端 前者适用于对授权端点的隐式授权流请求;后者适用于对授权端点的授权代码流请求。差异由客户端发送到授权端点的响应类型参数指示token表示隐式流,code表示授权代码流。因此,如果发生错误,逻辑

发件人:

如果资源所有者拒绝访问请求,或者请求因重定向URI丢失或无效以外的原因而失败,则授权服务器将通过向重定向URI的片段组件添加以下参数来通知客户端

发件人:

如果资源所有者拒绝访问请求,或者请求因重定向URI丢失或无效以外的原因而失败,则授权服务器通过向重定向URI的查询组件添加以下参数来通知客户端

前者适用于对授权端点的隐式授权流请求;后者适用于对授权端点的授权代码流请求。差异由客户端发送到授权端点的
响应类型
参数指示
token
表示隐式流,
code
表示授权代码流。因此,如果发生错误,逻辑如下:

if response_type == 'token'
  error response in fragment
else if response_type == 'code'
  error response in query string
else
  ????????????????????
end
规范似乎让它在最后的“else”中保持打开状态。一个可能的客户端错误是包含一个
response\u type
参数,该参数的值不是
code
token
。这可能不符合不可重定向错误的标准,因此授权服务器应重定向到
重定向\u uri
,如果可能,使用适当的错误响应(
error=invalid\u request
或可能
error=unsupported\u response\u type


但那个错误参数去了哪里?查询组件还是片段?二者都如果这毕竟被视为不可重定向的错误,比如无效的
重定向uri

仔细阅读RFC 6749,可以发现,如果某些条件满足,客户端可以访问授权端点,而无需事先注册其重定向uri。这些条件是(1)机密,(2)隐式和(3)显式重定向uri参数。在这种情况下,需要在确定重定向uri之前确定响应类型。这意味着存在无法通过重定向向客户端报告不受支持的\u响应\u类型错误的情况。因此,我们不必总是通过重定向报告不受支持的\u响应\u类型错误(因为在这种情况下我们不能这样做)


如果我是你,我只会向客户端发送“400错误请求”,并显示一条错误消息。恕我直言,无法正确指定响应类型的客户端没有资格通过重定向接收响应,应该在其早期开发阶段提前通知此类基本错误。

这与我的判断相同。谢谢你的回答!