Ari*_*deh 2 java authentication jwt
我正在为我的 Spring Boot 应用程序使用 JWT 身份验证。前端将是一个单页面应用程序。
我应该在服务器端处理注销功能吗?据我了解,除非我们有一个有状态服务器(在令牌的最大生命周期内存储注销的令牌),否则无法使 JWT 令牌无效。
SPA 每次在其标头中发出请求时都会传递 JWT 令牌,并且当用户访问/logout而不调用服务器时,它可以将其从 localStorage 中删除。
潜在的问题是什么?这个想法在其他地方也被使用过吗?最佳实践是什么?
首先,您必须决定是否需要有状态服务器。
这很容易。只需向服务器发送注销请求并丢弃会话即可。就是这样。这是最安全的方法。
我喜欢无状态服务器,因为您不必管理状态。但当然你需要权衡。在这种情况下的安全性。无法注销,因为您没有可以在服务器端使会话失效的会话。
因此,窃取您的 JWT 令牌的攻击者可以使用该会话直到会话结束,并且无法采取任何措施来阻止这种情况。
但是您可以采取一些措施来避免攻击者获得 JWT 令牌。以下是您可以做并且已经做对的一些事情
但这些机制都是为了让攻击者更难攻击。真正的注销是不可能的。
如果你正确使用 JWT,你的服务器将有一个“状态”。您必须定义一个在所有服务器上都相同的秘密。如果您使用多个服务器,那么您必须注意这一点。
| 归档时间: |
|
| 查看次数: |
1617 次 |
| 最近记录: |