是否有必要每次请求刷新令牌?

Joh*_*ohn 8 api token jwt single-page-application

我在这里因为我对谷歌上发现的东西不满意.

我一般都在构建SPA,所以对我来说这个过程很简单:成功登录后会生成一个jwt并将其用于我从客户端发出的每个请求.

有人告诉我,我应该刷新该令牌并为我提出的每个请求发回一个新令牌.这对我来说有意义吗?我的意思是,如果有人试图破解我,嗅探请求将给黑客提供我收到的相同令牌,那么捕获的是什么?

我的意思是,如果我在另一个请求完成之前发出请求怎么办?从理论上讲,我会发送两次相同的令牌,其中一个请求将被拒绝.

这是如何正确处理的?我相信这比我自己想象的更多.

Mar*_*ija 16

它是安全性和便利性之间的折衷.

不,您不需要在每个请求上刷新令牌.但是你肯定希望你的JWT在某个时候到期.这是为了保护您免受JWT盗窃,恶意用户可以使用被盗访问令牌无限期地访问目标资源.

以下是处理令牌过期的方法:

  1. 实现刷新令牌流.您将在进行身份验证时发出访问JWT和刷新JWT的权限.一旦访问JWT已过期,您将使用刷新JWT获取新访问JWT.
  2. 实现滑动到期.在JWT有效期的一半到期后,您将发布新的JWT.可以在这里找到它的一个例子.我建议在令牌过期时加入截止日期.例如,初始令牌有效期为20分钟,截止日期为8小时.滑动到期8小时后,您将停止发放新令牌.

  • 1.我们可以假设刷新令牌也可以被盗,比如访问令牌吗?在那种情况下我们会做什么?2.对于滑动过期,攻击者可以像合法用户一样获得新的访问令牌.在那种情况下我们该怎么做? (6认同)
  • @nihartrivedi810 如果刷新令牌被盗,则可以在后端将其列入黑名单,这可以防止使用令牌生成新的访问令牌,访问令牌的问题在于它们没有针对任何数据库进行检查。 (2认同)
  • 这非常有帮助。但是服务器什么时候应该发出新的刷新令牌呢?或者如何知道是否需要列入黑名单 (2认同)