需要重新认证时的 HTTP 状态

HTTP status if re-authentication is required

假设您使用的是基于令牌的身份验证,在这种情况下您会使用哪个状态码:

  1. 客户端有一个令牌并向服务器发出请求
  2. 令牌过期并且服务器发送一个401未经授权。
  3. 客户端发送刷新令牌
  4. 令牌无效并且服务器响应 XXX?

用例是一个应用程序,它会自动捕获 401 并使用刷新令牌发出请求。如果服务器在该令牌无效时以 401 响应,则客户端将永远尝试使用刷新令牌请求新的访问令牌。但它应该告诉客户端,它应该使用其凭据(例如电子邮件和密码)重新进行身份验证。

我只是想知道哪种状态代码最适合这种情况,正如规范中所说的 403 Forbidden "authorization will not help"。

我不会让访问令牌和刷新令牌互换:使用访问令牌访问受保护的资源并使用刷新令牌从特殊端点获取新的访问令牌。 OpenID Connect 就是这样工作的。

您会多一个 HTTP 请求,但 HTTP 代码不会成为问题,而且在我看来,您会得到一个更清晰的代码。