当使用资源所有者密码授权类型时,如果由于资源所有者输入的密码不正确而无法授予访问 token ,授权服务器似乎应该使用 HTTP 400(错误请求)状态代码进行响应。根据我对 RFC 6749 第 5.2 节** 的理解,我得出了这个结论,在由于 invalid_grant 而无法授予 token 的情况下,“授权服务器使用 HTTP 400(错误请求)状态代码进行响应”。为 invalid_grant 列出的原因包括资源所有者凭据无效。
我的理解对吗?如果是这样,为什么不返回 HTTP 401(未授权)呢?对于基本身份验证,无效密码会导致 401。为什么 OAuth 2.0 规定返回 400?这是因为 401 是为无效的客户端凭证保留的吗?
最佳答案
我也想知道这一点,但似乎 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/