凭据过期 error/exception 的 HTTP 状态代码应该是什么?
what should be HTTP status code for credentials Expired error/exception?
我正在开发 RESTful APIs,我已经实现了基于令牌的身份验证,其中令牌摘要是使用时间戳准备的。现在当请求到达 API 服务器时,我正在检查提供的时间戳是否无效(即指定了 future/past 的日期时间)然后抛出错误消息表明 "future token detected" 或"token has expired"。我需要附上 HTTP 状态码 我很困惑哪种状态码适合这种情况?
到目前为止,我已经查看了可用的状态代码 (ref1, ref2),我认为在这里使用 400 'bad request' 比 401 'Unauthorized' 和 403 [=22] 更合适=]状态代码。
大家怎么看?
由于时间戳无效,我认为令牌无效。因此客户端不再经过身份验证。所以我会抛出 401 Unauthorized。您可以自由地将上下文的额外数据添加为带有 X- 前缀的 HTTP header,或者添加根据接受请求 header 编码的响应 body(json、文字等)。喜欢:
{
"error": {
"status": 401,
"details": {
"code": "401.3",
"description": "The timestamp provided must not be in the future."
}
}
}
这不是 403 禁止访问:403 表示 "the client is authenticated but does not have the right to send this request"。在您的情况下,我认为客户端不再经过身份验证。
解决方法...考虑过期的密码(不完全是过期的凭据)
我从 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status 中找到了这个
403禁止访问
客户没有访问内容的权限;也就是说,它是未经授权的,
所以服务器拒绝提供请求的资源。
与 401 不同,客户端的身份是服务器已知的。
//- - - -
好吧,我认为更好的响应是带有描述或自定义内容的 403 header,因此客户端需要使用您的 auth + param 和新密码来调用端点。
现在,关于过期凭证(还考虑用户和密码,而不是令牌),403 我觉得也不错,因为“服务器知道客户端的身份”但未经授权。
关于令牌和您的时间戳,我认为带有描述的 401 很好,因为第一步是服务器查看时间戳,并且在检查任何凭据之前时间戳将失败..
我正在开发 RESTful APIs,我已经实现了基于令牌的身份验证,其中令牌摘要是使用时间戳准备的。现在当请求到达 API 服务器时,我正在检查提供的时间戳是否无效(即指定了 future/past 的日期时间)然后抛出错误消息表明 "future token detected" 或"token has expired"。我需要附上 HTTP 状态码 我很困惑哪种状态码适合这种情况?
到目前为止,我已经查看了可用的状态代码 (ref1, ref2),我认为在这里使用 400 'bad request' 比 401 'Unauthorized' 和 403 [=22] 更合适=]状态代码。
大家怎么看?
由于时间戳无效,我认为令牌无效。因此客户端不再经过身份验证。所以我会抛出 401 Unauthorized。您可以自由地将上下文的额外数据添加为带有 X- 前缀的 HTTP header,或者添加根据接受请求 header 编码的响应 body(json、文字等)。喜欢:
{
"error": {
"status": 401,
"details": {
"code": "401.3",
"description": "The timestamp provided must not be in the future."
}
}
}
这不是 403 禁止访问:403 表示 "the client is authenticated but does not have the right to send this request"。在您的情况下,我认为客户端不再经过身份验证。
解决方法...考虑过期的密码(不完全是过期的凭据) 我从 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status 中找到了这个 403禁止访问 客户没有访问内容的权限;也就是说,它是未经授权的, 所以服务器拒绝提供请求的资源。 与 401 不同,客户端的身份是服务器已知的。 //- - - - 好吧,我认为更好的响应是带有描述或自定义内容的 403 header,因此客户端需要使用您的 auth + param 和新密码来调用端点。
现在,关于过期凭证(还考虑用户和密码,而不是令牌),403 我觉得也不错,因为“服务器知道客户端的身份”但未经授权。
关于令牌和您的时间戳,我认为带有描述的 401 很好,因为第一步是服务器查看时间戳,并且在检查任何凭据之前时间戳将失败..