OAuth 2.0 - 当资源所有者凭据无效时,为什么授权服务器返回400而不是401?

时间:2014-03-22 00:10:50

标签: http oauth

使用资源所有者密码授予类型时,如果由于资源所有者输入的密码不正确而无法授予访问令牌,则授权服务器似乎应使用HTTP 400(错误请求)状态代码进行响应。我根据我对RFC 6749第5.2节的理解得出了这个结论,其中说明了#34;授权服务器以HTTP 400(错误请求)状态代码响应"在由于invalid_grant而无法授予令牌的情况下。为invalid_grant列出的原因包括资源所有者凭据无效。

我的理解是否正确?如果是这样,为什么不返回HTTP 401(未授权)?使用基本身份验证时,无效密码会生成401.为什么OAuth 2.0规定要返回400?这是因为401是为无效的客户端凭证保留的吗?

**见http://tools.ietf.org/html/rfc6749#section-5.2

2 个答案:

答案 0 :(得分:10)

我也想知道这一点,但似乎401响应需要在响应中返回WWW-Authenticate标头,这在此OAuth流程中没有意义。 This is the link到规范设计者讨论此问题的线程。

为了完整性(tl; dr):here是来自OAuth团队的Eran Hammer-Lahav澄清此问题的具体信息。

答案 1 :(得分:8)

我猜它是以这种方式实现的,因为客户端提供了无效数据,即(用户名,密码,刷新令牌等)客户端没有尝试访问受保护资源,因此他正在接收HTTP 400来指示他应该纠正他的意见。通常,当您尝试使用无效或过期的访问令牌访问受保护资源时,您应该收到401。