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 - 刷新令牌和安全改进的主要内容,如果未能解决你的问题,请参考以下文章

JWT 访问令牌和刷新令牌安全性

使用刷新令牌和访问令牌如何比仅使用 1 个 JWT 更“安全”?

刷新令牌如何为 jwt 添加安全性?

安全性 - JWT 和 Oauth2(刷新令牌)

使用 JWT 刷新令牌如何安全?

刷新令牌如何比长寿命的 JWT 更安全?