使用资源所有者密码授予类型时,如果由于资源所有者输入的密码不正确而无法授予访问令牌,则授权服务器似乎应使用HTTP 400(错误请求)状态代码进行响应。我根据我对RFC 6749第5.2节的理解得出了这个结论,其中说明了#34;授权服务器以HTTP 400(错误请求)状态代码响应"在由于invalid_grant而无法授予令牌的情况下。为invalid_grant列出的原因包括资源所有者凭据无效。
我的理解是否正确?如果是这样,为什么不返回HTTP 401(未授权)?使用基本身份验证时,无效密码会生成401.为什么OAuth 2.0规定要返回400?这是因为401是为无效的客户端凭证保留的吗?
答案 0 :(得分:10)
我也想知道这一点,但似乎401响应需要在响应中返回WWW-Authenticate标头,这在此OAuth流程中没有意义。 This is the link到规范设计者讨论此问题的线程。
为了完整性(tl; dr):here是来自OAuth团队的Eran Hammer-Lahav澄清此问题的具体信息。
答案 1 :(得分:8)
我猜它是以这种方式实现的,因为客户端提供了无效数据,即(用户名,密码,刷新令牌等)客户端没有尝试访问受保护资源,因此他正在接收HTTP 400来指示他应该纠正他的意见。通常,当您尝试使用无效或过期的访问令牌访问受保护资源时,您应该收到401。