返回过期密码的好的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 状态返回码是啥?