Authentication 刷新令牌(JWT)如何避免中间人攻击?

Authentication 刷新令牌(JWT)如何避免中间人攻击?,authentication,.net-core,jwt,authorization,Authentication,.net Core,Jwt,Authorization,我最近用DotNet核心标识实现了jwtauth 我知道为了减少获取访问令牌的身份验证次数(当它在短时间内到期时,以提高安全性),我们使用刷新令牌来更新访问令牌,而不是重新身份验证 我认为,如果一个中间人试图窃取刷新令牌以获取新的访问令牌并发出请求(劫持令牌),系统如何找到它并拒绝请求 我的意思是,如果JWT被人盗用来冒充,服务器会识别它并拒绝它,有没有解决方案?(我知道SSL可能会有所帮助,但我正在考虑其他方法。例如,通过时间和Ip加密JWT或……?假设您在服务器和客户端之间使用双向SSL,您

我最近用DotNet核心标识实现了jwtauth

我知道为了减少获取访问令牌的身份验证次数(当它在短时间内到期时,以提高安全性),我们使用刷新令牌来更新访问令牌,而不是重新身份验证

我认为,如果一个中间人试图窃取刷新令牌以获取新的访问令牌并发出请求(劫持令牌),系统如何找到它并拒绝请求


我的意思是,如果JWT被人盗用来冒充,服务器会识别它并拒绝它,有没有解决方案?(我知道SSL可能会有所帮助,但我正在考虑其他方法。例如,通过时间和Ip加密JWT或……?

假设您在服务器和客户端之间使用双向SSL,您的担心大多没有意义。原因是,任何站在中间的人,如果他想办法拦截,甚至不知道JWT从哪里开始和结束。相反,他只会被一些编码混乱所困扰。假设,如果有人得到了JWT,那么是的,他可能能够模拟你的一个用户。这和有人偷了一张信用卡,然后伪装成信用卡的主人没什么区别。但是,由于SSL,发生这种情况的可能性相当小。

您的意思是不必担心客户端用户内部的JWT被劫持?当然这是一个问题,因此,如果您谈论的是网站,您永远不应该将JWT存储到Cookie或本地存储等。但您强调的问题不限于JWT,这是所有数据的问题。@Mohammad如果你真的担心JWT被劫持,那么就遵循银行和其他类似安全网站使用的模式。他们发出的所有令牌(auth和refresh)都非常短暂,最多几分钟。所以,现在即使有人劫持令牌,他们也必须很快获得并使用它,从而进一步降低您的风险(在SSL已经为您提供保护的基础上)。是的,我认为是这样,我发现,通过SSL和减少访问令牌的过期时间,并将JWT存储在浏览器中的安全位置,我们可以将模拟的风险降低近0%。