【发布时间】:2022-01-04 03:38:49
【问题描述】:
我对这个访问令牌和刷新令牌完全陌生,如果在任何地方有错误,请纠正我。据我所知,刷新令牌轮换意味着每次用户请求 AT(具有有效 RT)时,都会给出新的 AT1 和 RT1 对。所以下次用户应该使用新的RT1来更新AT,并且会得到一对新的AT2和RT2。
我的问题是:
-
要实现 RT Rotation,我们需要将 RT 存储在数据库中。那么我们需要将哪个 RT 存储在数据库中是旧的还是新发布的 RT。根据this,我们需要存储所有过期的RT,并且需要检查每个AT 更新请求的数据库,如果它在数据库中,那么我们需要立即使刷新令牌系列无效。但是如果我们这样做,我们可能需要为单个用户在数据库中存储更多的 RT,这在考虑系统中的所有用户时将是巨大的。如果不是,它是实现 RT Rotation 的正确方法吗?实现 RT Rotation 的正确方法是什么?
-
在Documentation 关于 RT 轮换(在自动重用检测第 4 点下)中,他们这样提到 立即使刷新令牌系列无效。这是否意味着从初始身份验证发出的每个 RT 都将具有任何相同的特征来将它们识别为一个令牌系列(因为它被称为刷新令牌系列)
-
当用户从系统注销时,我们如何使 RT 无效?我不认为简单地从 cookie 中删除 RT 不是正确的方法,因为例如如果 RT 的过期时间是一天并且用户在其过期时间之前注销仍然可以使用 RT (除非我们将之前的 RT 存储在 DB 中并检查 AT 的下一次更新),直到达到其到期时间。那么如何解决呢。
【问题讨论】:
标签: authentication oauth-2.0 jwt access-token refresh-token