我的mongodb是存储刷新令牌的正确位置吗?

时间:2020-11-06 14:55:03

标签: mongodb authentication token refresh-token

我正在尝试实现JWT令牌/ RefreshToken Auth后端服务器。 有很多资源,而且确实很有帮助,但是不知何故告诉我如何/在何处保存刷新令牌。

到目前为止,我正在与mongo db合作来存储我的应用程序的信息。将刷新令牌存储在同一数据库中是否安全?我还没有看到更安全或性能更高的解决方案?

1 个答案:

答案 0 :(得分:1)

理想情况下,您甚至不必将访问或刷新令牌存储在任何数据库中。 JWT模式背后的主要动机之一是消除了在服务器中保留会话状态的需要。相反,会话状态由JWT令牌本身维护。为了更好地理解这一点,让我们检查一下服务器收到传入访问令牌时最简单的事件顺序。

服务器收到传入的访问令牌时,它要做的第一件事就是检查该令牌的 claims 部分。通常称为exp的声明之一包含令牌的到期日期。服务器中使用过期令牌的任何访问尝试都将被拒绝。服务器还可以通过计算 checksum 来确保传入的JWT未被篡改。任何过期或其他索赔被篡改的令牌都将无法通过校验和测试。

这里的要点是,理想情况下,JWT可以充当各种独立的护照。无需将其存储在数据库中以进行比较或查找。有时,可能需要将某些JWT列入黑名单。在这种情况下,可能需要将它们存储在服务器上。但是在这里,我们仍然不会使用数据库,而是使用访问速度非常快的轻量级缓存。而且,我们将只存储很少数量的列入黑名单的JWT,因此服务器仍将保持基本无状态。