对于使用错误凭据执行的登录请求,REST API应该返回什么状态代码?

Pet*_*r F 5 authentication rest httpresponse

我发现了很多关于HTTP状态代码含义的答案和解释。我的问题特别是关于对登录端点的POST请求,该请求例如要求提供用户名和密码以及提供不正确用户名和密码的情况。

一些想法:

400错误的响应 我认为此代码不合适,因为它表示该请求在语法上是不正确的,并且服务器无法理解,此处不是这种情况。登录数据在语义上是不正确的。

401未经授权 这对我来说是棘手的部分。如果401仅出现在需要身份验证标头的请求上,那么这是不正确的。但是,如果401可能出现在所有要求身份验证的请求上(作为标头或在正文中),则401是候选对象。

403禁止 通常,如果用户已经通过身份验证并为系统所知,但请求了不允许其访问的资源,则返回403。在登录之前,绝对不会对用户进行身份验证。我不知道未经身份验证的用户是否有403的语义。

得知答案或听到您的想法我很高兴。

Jos*_*nes 16

如果用户尝试进行身份验证,但提供了无效凭据,则无论您是否使用基本授权,响应都应具有 401 状态。401 表示身份验证失败,但用户可以更改他们的请求并再次尝试。

如果用户通过了身份验证,但没有被授权访问所请求的资源,那么响应的状态应该是 403。403 表示用户被禁止访问资源,无论他们如何改变请求,他们都不会被允许的访问。

在您的端点要求凭据位于请求正文中的情况下,如果请求正文不符合您的规范,您应该返回 400。