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

标签 http oauth

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

我的理解对吗?如果是这样,为什么不返回 HTTP 401(未授权)呢?对于基本身份验证,无效密码会导致 401。为什么 OAuth 2.0 规定返回 400?这是因为 401 是为无效的客户端凭证保留的吗?

** 参见 https://www.rfc-editor.org/rfc/rfc6749#section-5.2

最佳答案

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

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

关于http - OAuth 2.0 - 为什么授权服务器在资源所有者凭据无效时返回 400 而不是 401?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586825/

相关文章:

http - 什么是 HTTP 实体?

http - WebLogic 为空的主机 header 请求返回 Bad Request

android - 有人成功地使用 Robolectric 模拟了 HttpRequests 吗?

.net - 用于 Web 表单的 Google.Apis.Auth.OAuth

django - 无法使用 curl 通过 Django OAuth Toolkit 获取 token

asp.net - C#/OWIN/ASP.NET : can I *manually* generate and get a valid bearer token string in my API code?

javascript - 如何使用 JavaScript 实现 OAuth

http - 如何缓慢地提供 HTTP?

java - 特定 Wicket 组件的 URL

Twitter O-Auth 回调网址