首页 > 解决方案 > 通过 JWT 验证登录用户

问题描述

我在 ASP.NET Core Web API 中使用 JWT 身份验证。我遵循的过程。

  1. 在服务器端生成令牌并将其发送给客户端。
  2. 客户端随每个请求在标头上发回令牌。\
  3. 服务器验证令牌并使用请求的信息进行响应。

我将令牌存储在客户端的本地存储中。我的问题是,

  1. 以两个不同的用户身份从两个不同的浏览器登录(使用用户名和密码登录,就像任何正常登录一样)。
  2. 交换存储在两个用户的本地存储中的令牌。

即使请求来自不同的用户,服务器仍会验证令牌是否有效。

简单地说,任何人都可以通过使用有效令牌修改本地存储来入侵系统。

如何解决这个安全漏洞?

标签: angular.net-corejwt

解决方案


一种常见的预防方法是让 IP 成为已签名 JWT 的一部分(从他登录的地方)。由于这种安全问题,JWT 通常也使用安全机制进行存储。您可以根据客户端和您使用的框架研究存储 JWT 的最佳方式。


推荐阅读