我对此访问令牌和刷新令牌完全陌生,如果有任何地方错误,请纠正我。据我所知,刷新令牌轮换意味着每次用户请求 AT(具有有效 RT)时,都会给出新的 AT1 和 RT1 对。因此,下次用户应使用新的 RT1 更新 AT,并将获得新的 AT2 和 RT2 对。
我的问题是:
为了实现 RT 旋转,我们需要将 RT 存储在数据库中。那么我们需要将旧的 RT 和新发布的 RT 存储在 DB 中。根据这个,我们需要存储所有过期的 RT,并且需要检查 DB 中的每个 AT 续订请求,如果它在 DB 中,那么我们需要立即使刷新令牌系列失效。但如果我们这样做,我们可能需要在数据库中为单个用户存储更多的 RT,当考虑到系统中的所有用户时,这将是巨大的。这是实现 RT 旋转的正确方法吗?如果不是,那么实现 RT 旋转的正确方法是什么?
在本文档中,关于 RT 轮换(在自动重用检测第四点下),他们提到这样会立即使刷新令牌系列失效。这是否意味着从初始身份验证发出的每个 RT 都将具有相同的特征来将它们标识为一个令牌系列(因为它被称为“刷新令牌系列”)
当用户从系统注销时,我们如何使 RT 失效?我不认为简单地从 cookie 中删除 RT 不是正确的方法,因为例如,如果 RT 的过期时间是一天,并且用户在过期时间之前注销,那么 RT 仍然可用(除非我们将之前的 RT 存储在数据库中)并检查AT的下一次更新),直到达到其到期时间。那么如何解决这个问题呢。