返回刷新令牌验证成功的状态代码,但未找到用户?

问题描述 投票:0回答:1

我正在使用 Jwt 令牌身份验证构建一个 Api,在刷新令牌方法中,我使用官方的 JwtSecurityTokenHandler.ValidateToken() 方法验证令牌,然后我从数据库获取用户。我的问题是,如果验证成功,但未找到用户,我是否应该返回 404 用户未找到或 401 未经授权?

404 因为

  • 找不到资源的正确响应
  • 因为我们知道令牌是有效的,所以我们可以给出更具描述性的错误,而不必担心安全性

401 因为

  • 无论原因如何,一致的错误响应
  • 不像404那样泄露太多,所以更安全
  • 由于认证时没有找到用户,即使token有效也还是401 Unauthorized

链接到 JwtSecurityTokenHandler.ValidateToken() 微软文档:https://learn.microsoft.com/en-us/dotnet/api/system.identitymodel.tokens.jwt.jwtsecuritytokenhandler.validatetoken?view=msal-web-dotnet-最新

我正在学习,请放轻松,谢谢

c# jwt http-status-code-404 http-status-codes http-status-code-401
1个回答
0
投票

401 不是解决方案,因为您的凭据在正确的标头中给出并且有效(所以也没有 403

404 是解决方案,因为您的用户在数据库中不存在。

然而,这里的主要问题是“为什么要事先为不存在的用户伪造一个有效的令牌?”。这就是为什么您需要在与 404 一起发送的正文中解释问题,状态代码本身仅代表所发生情况的全局概念。

不像404那样泄露太多,所以更安全

不存在您想要的“安全”问题,令牌有效并且用户已被授予访问部分应用程序的权限。为什么事后要隐藏任何有关它的信息,有效的连接已经存在

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