【问题标题】:How to Validate Token JWT Token that it comes from the same User in Web API C#如何在Web API C#中验证来自同一用户的令牌JWT令牌
【发布时间】:2021-12-16 09:25:08
【问题描述】:

最近使用 Web API Core 构建了 JWT 令牌。下面需要认真澄清的是细节

如果用户 A 使用浏览器选项卡 A 登录并且请求已处理并生成令牌。如果用户 B 使用浏览器选项卡 B 登录并且请求已被处理并生成令牌。如果我将用户 A 令牌发送给用户 B 会发生什么如何验证此令牌用于此特定登录用户的令牌?

【问题讨论】:

    标签: c# .net asp.net-core-webapi


    【解决方案1】:

    我认为您可能误解了身份验证的一般工作方式。

    在 JWT Auth 中,“登录”仅表示您发出的请求包含有效的 Bearer 令牌。这意味着发送有效令牌的用户始终是有效的登录用户,无需进一步验证。

    但是,如果您需要基于 Authenticated 用户的更多信息,您可以从名为 User 的控制器中的 HttpContextClaimsPrincipal 属性访问该信息。

    例如,

    string accessToken = await HttpContext.GetTokenAsync("Bearer", "access_token");
    string userName = User.FindFirst(ClaimTypes.Name).Value;
    

    注意:您必须明确存储您希望从 User 属性中检索的声明。

    【讨论】:

    • 是的,我明白了。我的问题是如果发送不同的有效令牌会发生什么。假设您登录了一个选项卡,而 i 在同一台计算机的另一个选项卡中登录,如果黑客使用我的令牌而不是您的令牌进行另一个请求,将会发生什么。我的观点是如何验证 Manoj 令牌是 manoj 令牌和智能 E 令牌是智能 E 令牌?
    • 哦,我想我明白你在说什么了。在您的控制器中,User 属性包含您存储在访问令牌中的信息,例如 userId、用户名等。我将更新我的答案以反映这些
    • 谢谢。我会检查并接受答案。刚开始学习 JWT
    • 仍然令人困惑。因为即使我们可以从附加的声明中获取用户 ID。如果我再次使用来自 manoj 请求的 smartE 令牌,我们是否可以验证令牌是由同一个人(例如)请求的,它将获得 smart 的用户 ID,并且它是有效令牌,对吗?
    猜你喜欢
    • 2019-01-27
    • 2021-11-16
    • 2019-05-01
    • 2015-09-20
    • 1970-01-01
    • 2023-02-24
    • 2019-09-24
    • 2018-06-12
    • 2018-10-16
    相关资源
    最近更新 更多