【发布时间】:2017-11-23 23:14:59
【问题描述】:
当密码过期时,rest api 应该返回什么?我的意思是:用户名和密码正确,但是过期了。
Here我发现了
过期或撤销凭证的机制可以是 指定为身份验证方案定义的一部分。
是否有关于过期凭据的正确和/或正确 http 状态代码的规范? http 状态代码是否可以很好地处理凭据过期?
【问题讨论】:
当密码过期时,rest api 应该返回什么?我的意思是:用户名和密码正确,但是过期了。
Here我发现了
过期或撤销凭证的机制可以是 指定为身份验证方案定义的一部分。
是否有关于过期凭据的正确和/或正确 http 状态代码的规范? http 状态代码是否可以很好地处理凭据过期?
【问题讨论】:
过期密码是无效密码,服务器不能接受。
因此,如果您使用 HTTP 身份验证(在 Authorization 标头中发送凭据),则可以将 401 与描述性有效负载一起使用。
以下是来自RFC 7235 的一些引用,HTTP/1.1 中的身份验证参考:
Authorization标头字段允许用户代理进行身份验证 本身与原始服务器 - 通常,但不一定,之后 收到401(未经授权)响应。它的价值包括 包含用户身份验证信息的凭据 被请求资源领域的代理。Authorization = credentials[...]
401(未授权)状态码表示该请求尚未 已应用,因为它缺少有效的身份验证凭据 目标资源。生成 401 响应的服务器必须发送 一个WWW-Authenticate头字段,至少包含一个 适用于目标资源的挑战。如果请求包含身份验证凭据,则
401响应表明授权已被拒绝 证书。 [...]
【讨论】:
WWW-Authenticate header field containing at least one challenge applicable to the target resource. 挑战是什么?
WWW-Authenticate 标头是如何定义的。 challenge 的完整定义见same document 的其他部分。
不是 HTTP 标准的一部分,419 Authentication Timeout 表示 先前有效的身份验证已过期。它被用作 替代 401 Unauthorized 以区别于 否则经过身份验证的客户端被拒绝访问特定服务器 资源。
【讨论】:
419 不是 registered in IANA。所以我不会推荐这个状态码。