JWT - 刷新令牌和安全改进
Posted
技术标签:
【中文标题】JWT - 刷新令牌和安全改进【英文标题】:JWT - Refreshing tokens, and security improvments 【发布时间】:2020-04-15 04:10:21 【问题描述】:我正在使用 NodeJS 和 ReactJS 开发一个新的 Web 应用程序,并且我正在使用 JWT 进行身份验证。客户端使用 axios.post() 向 /login 发送请求,服务器检查用户输入的数据并返回一个过期时间为 5 分钟的访问令牌和一个刷新令牌。我使用 Redux 将令牌保存在应用级别状态。在接下来的请求中,客户端将令牌发送回服务器。
我的问题是:
1) 有没有办法打开多个选项卡并恢复打开的第一个选项卡的状态,当用户退出选项卡时,他会退出所有选项卡? (Facebook 使用这种方法)
2) 假设我在朋友家连接到网站,但离开时忘记断开连接,有没有办法在我回到家时断开所有设备的连接? (Facebook 也使用它)
3) 是否可以在 X 秒/分钟后仅在关闭选项卡时自动删除处于应用级别状态的令牌,否则可以持续刷新访问令牌?
提前谢谢你
【问题讨论】:
【参考方案1】:9 天后没有回复您的帖子。太糟糕了,让我帮你。 为了得到你想要的最接近的表示,我会使用 SameSite Cookie。
它们始终位于所有选项卡上,您也可以在一段时间后使它们失效。 Cookie 将被删除,您将被注销。
为了使用设备,您可以在刷新令牌上使用黑名单,尽管这违反了 JWT 的原则,但仍有可能。
-
SameSite Cookie 分布在所有选项卡中
Cookie 可以在所有请求的头部发送(使用严格模式)
删除 Cookie 会导致注销
将 Refreshtoken JWT 列入黑名单也会导致用户注销。
建议您阅读有关 SameSite cookie(严格)的信息。你会感到惊讶,因为知道它的人并不多。
如果我可以提供任何帮助,请随时通过 DM 与我联系。
【讨论】:
以上是关于JWT - 刷新令牌和安全改进的主要内容,如果未能解决你的问题,请参考以下文章