使用过期的授权令牌请求的公开可用api资源的正确行为

时间:2018-11-23 08:53:57

标签: rest api http-status-codes

我知道已经有很多401 vs 403问题,但这不是我的情况。

我要问的是:如果所请求的api资源是公开可用的(不是 require 授权),但请求包含授权,服务器应该怎么做?标头中包含不正确或已过期的令牌?

我的推理如下:理论上,服务器可以忽略它并做出响应,但这听起来是一个非常糟糕的主意。例如,处理请求后的业务逻辑可能会根据是否通过身份验证而有所不同。客户端应用程序还应立即获得应重新认证的反馈,而不仅是当它到达非公开端点时,还应如此。

被“严重认证”,因此被隐式地视为匿名,我认为这是一个未定义和令人困惑的行为。

所以总结一下。 在这种特殊情况下使用400是否合理,还是有其他通用做法?

1 个答案:

答案 0 :(得分:0)

如果此API本身是公开可用的,并且公开可用,您的意思是不需要对用户进行任何身份验证,那么为什么要向用户返回带有错误请求的响应?自己考虑一下是否有意义,如果它是公开的,则可以绕过任何类型的验证并在服务器上保存一些处理。

与此有关:

“但这感觉很不好。例如,处理请求后的业务逻辑可能会根据是否通过身份验证而有所不同。”

我认为在这种情况下,您应该更改API本身以进行身份​​验证,并且不接受任何类型的未授权用户或令牌已过期的用户。

对不起,如果我没有太大帮助,但这是我对此的看法。 如果其验证不正确,则它不是公共API,对吗? 公共API会在任何情况下做出响应,可能每秒对请求有一些限制。