我应该使用什么HTTP代码进行第三方身份验证失败?

问题描述 投票:3回答:3

我正在创建一个与第三方应用程序集成的应用程序。

为此,登录的用户提交用于第三方集成的API密钥。

[如果他们提交的API密钥无效-(并从第三方返回401),我应该返回哪个HTTP响应?

从我的应用程序中返回401听起来令人困惑,因为从前端的角度来看,目前尚不清楚我的应用程序或第三方应用程序未对它们进行身份验证。

我很想给它一个400-好像他们提交了带有无效电子邮件地址的表格等。

http-status-codes
3个回答
2
投票

您可以使用状态码HTTP状态码-407(需要代理身份验证)。从Mozilla Developers Reference

HTTP 407代理身份验证所需的客户端错误状态响应代码表明该请求尚未应用,因为它缺少用于以下代理服务器的有效身份验证凭据:在浏览器和可以访问请求的服务器之间资源。

您的后端应用程序就像是第三方API的代理,因此在这种情况下可以使用407。


0
投票

如果必须选择一个代码,我可能会选择返回403 Forbidden。

[RFC 7231 §6.5.3描述403代码如下:

403(禁止)状态代码表示服务器理解了请求,但拒绝授权。希望公开为什么禁止请求的服务器可以在响应有效负载(如果有)中描述该原因。

如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。客户端不应该自动使用相同的凭据重复请求。客户端可以用新的或不同的证书重复请求。但是,出于与凭据无关的原因,可能会禁止请求。

希望“隐藏”当前存在的禁止目标资源的原始服务器可以用状态代码404(未找到)进行响应。

此状态代码通常用作通用的“身份验证失败”响应,不太可能触发任何特定的身份验证机制,例如401可以强制浏览器显示用户名/密码提示。身份验证失败的具体原因可以在响应正文中以机器可读的形式或以HTML文档的形式进行描述。

代码400在这里不是最糟糕的选择,但它是通用的。


-1
投票

我总是使用动臂返回一个非常简单干净的有效负载,您应该尝试使用它,并且方法命名非常容易参见:https://www.npm.red/package/boom

© www.soinside.com 2019 - 2024. All rights reserved.