返回过期密码的好的http状态码是啥?

Posted

技术标签:

【中文标题】返回过期密码的好的http状态码是啥?【英文标题】:What's the good http status code to return on expired password?返回过期密码的好的http状态码是什么? 【发布时间】:2017-11-23 23:14:59 【问题描述】:

当密码过期时,rest api 应该返回什么?我的意思是:用户名和密码正确,但是过期了。

Here我发现了

过期或撤销凭证的机制可以是 指定为身份验证方案定义的一部分。

是否有关于过期凭据的正确和/或正确 http 状态代码的规范? http 状态代码是否可以很好地处理凭据过期?

【问题讨论】:

【参考方案1】:

过期密码是无效密码,服务器不能接受

因此,如果您使用 HTTP 身份验证(在 Authorization 标头中发送凭据),则可以将 401 与描述性有效负载一起使用。

以下是来自RFC 7235 的一些引用,HTTP/1.1 中的身份验证参考:

4.2. Authorization

Authorization 标头字段允许用户代理进行身份验证 本身与原始服务器 - 通常,但不一定,之后 收到401(未经授权)响应。它的价值包括 包含用户身份验证信息的凭据 被请求资源领域的代理。

 Authorization = credentials

[...]

3.1. 401 Unauthorized

401(未授权)状态码表示该请求尚未 已应用,因为它缺少有效的身份验证凭据 目标资源。生成 401 响应的服务器必须发送 一个WWW-Authenticate 头字段,至少包含一个 适用于目标资源的挑战。

如果请求包含身份验证凭据,则 401 响应表明授权已被拒绝 证书。 [...]

【讨论】:

您的意思是“描述性有效负载”,...标头?内容讯息? ...什么? @sensorario 我的意思是在响应正文中发送错误的表示(JSON、XML、文本等)。 WWW-Authenticate header field containing at least one challenge applicable to the target resource. 挑战是什么? @Cirelli94 请看一下WWW-Authenticate 标头是如何定义的。 challenge 的完整定义见same document 的其他部分。【参考方案2】:

http://getstatuscode.com/419

不是 HTTP 标准的一部分,419 Authentication Timeout 表示 先前有效的身份验证已过期。它被用作 替代 401 Unauthorized 以区别于 否则经过身份验证的客户端被拒绝访问特定服务器 资源。

【讨论】:

截至 2018 年 8 月,419 不是 registered in IANA。所以我不会推荐这个状态码。

以上是关于返回过期密码的好的http状态码是啥?的主要内容,如果未能解决你的问题,请参考以下文章

REST 中成功的 DELETE 语句的 HTTP 状态返回码是啥?

PIN 码的“达到最大尝试次数”的最佳 HTTP 状态码是啥?

post 错误码500是啥

未找到搜索结果的正确 HTTP 状态代码是啥?

HTTP/ 1.1 500 Internet 是啥错误?

HTTP状态码404是啥意思?