身份验证服务器超时时的 Http 状态码

Posted

技术标签:

【中文标题】身份验证服务器超时时的 Http 状态码【英文标题】:Http status code if auth server times out 【发布时间】:2018-09-24 11:28:59 【问题描述】:

假设我们正在从我们的服务器启动 oauth 流并且提供程序超时。我们返回什么作为状态码? 503 表示稍后重试或 504 表示其他服务器超时?

【问题讨论】:

如果允许的话,加一个问题一百次!有趣的一个,如果它很好地回答了你的问题,请查看我的答案! 【参考方案1】:

我认为502在这种情况下是最合适的

502 错误网关

502 错误意味着网站服务器正在充当反向 网站源服务器的代理(例如,CDN PoP)没有 接收来自源服务器的有效响应。这可能是因为 源服务器遇到问题,存在无效或 不正确的 DNS 名称,或者因为源服务器上的防火墙具有 阻止了反向代理服务器请求。

当源服务器上的请求正在占用时,也可能发生这种情况 几分钟即可完成和缓存工具,例如 Varnish Cache 已被指示在设定的秒数后超时。漆 缓存的默认超时时间为 60 秒,section.io 推荐 出于安全和警报原因而保留。

504 网关超时

与 502 错误类似,如果出现 504 Gateway Timeout 错误, 充当网站原始服务器代理的服务器没有 在设定的时间内收到来自网站源服务器的响应 时期。这可能表明 DNS 主机或主机存在问题 公司,或与反向连接或配置 代理服务器和网站源服务器。

更多信息在这里https://www.section.io/blog/504-503-errors-difference/

【讨论】:

在我们的例子中没有阻塞,如果用户再次尝试它可能会工作一段时间。【参考方案2】:

已经有一个有趣的问题与您的上下文相似,并且您可以选择多种选择。

也许可以快速查看this 问题。

在我看来,从上述所有 HTTP 状态代码的选择中,我建议使用 419,根据 documentation 声明以下内容:

419 验证超时

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

【讨论】:

以上是关于身份验证服务器超时时的 Http 状态码的主要内容,如果未能解决你的问题,请参考以下文章

Django,Djoser 社交身份验证:在服务器端会话数据中找不到状态。状态码 400

如何在 GraphQL 中设置 http 状态码

更改 Restlet 发回的状态码以进行身份​​验证

在身份验证失败时返回自定义状态码 .Net Core

使用JAVA请求需要Basic身份验证的网页

使用 Laravel 和 Passport 在身份验证失败时响应状态码 401?