首页 > 解决方案 > 使用过期授权令牌请求的公开可用 api 资源的正确行为

问题描述

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

我要问的是:如果请求的 api 资源是公开可用的(不需要授权)但请求包含带有不正确或过期令牌的授权标头,那么服务器理想情况下应该做什么?

我的推理如下:理论上服务器可以忽略它并响应,但这感觉是一个非常糟糕的主意。例如,处理请求背后的业务逻辑可能会因是否经过身份验证而有所不同。客户端应用程序还应该得到一个即时反馈,它应该重新进行身份验证,而不仅仅是当它到达非公共端点时。

我认为被“严重认证”并因此被隐含地视为匿名是一种有点未定义和令人困惑的行为。

所以总结一下。在这种特殊情况下使用 400 是否合理,或者是否有任何其他常见的做法?

标签: restapihttp-status-codes

解决方案


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

与此相关:

“但这感觉是一个非常糟糕的主意。例如,处理请求背后的业务逻辑可能会因是否经过身份验证而有所不同。”

我认为在这种情况下,您应该将 API 本身更改为需要身份验证,并且不接受任何类型的未经授权的用户或具有过期令牌的用户。

抱歉,如果我没有提供太多帮助,但这是我对此的看法。如果它的身份验证不正确,那么它不是公共 API,对吗?公共 API 会在任何情况下响应,可能只是对每秒请求有一些限制。


推荐阅读