使用资源所有者密码授予类型时,如果由于资源所有者输入的密码不正确而无法授予访问令牌,则授权服务器似乎应使用HTTP 400 (Bad Request)状态代码进行响应。我是基于对RFC6749第5.2**节的理解得出这个结论的,在令牌由于invalid_grant而无法授予的情况下,该节规定“授权服务器使用HTTP400 (Bad Request)状态码进行响应”。列出的invalid_grant原因包括资源所有者凭据无效。
我的理解正确吗?如果是,为什么不返回HTTP 401 (未授权)?使用基本身份验证时,无效的密码将导致401。为什么OAuth 2.0规定要返还400?这是因为401是为无效的客户端凭据保留的吗?
发布于 2015-01-06 12:11:32
我也想知道这一点,但似乎401响应需要在响应中返回一个WWW-Authenticate头部,这在这个OAuth流中没有意义。This is the link链接到规范设计者讨论此问题的线程。
对于完整性(tl;dr):here是来自OAuth团队的Eran Hammer-Lahav澄清这个问题的具体消息。
发布于 2015-01-08 08:30:29
我猜它是以这种方式实现的,因为客户端提供了无效数据,即(用户名、密码、刷新令牌等)。客户端没有尝试访问受保护的资源,因此他将收到HTTP 400,以指示他应该更正其输入。通常,当您尝试使用无效或过期的访问令牌访问受保护的资源时,您应该收到401。
https://stackoverflow.com/questions/22586825
复制