Authentication 为什么我们需要JWT中的刷新令牌

Authentication 为什么我们需要JWT中的刷新令牌,authentication,jwt,authorization,Authentication,Jwt,Authorization,我只是在学习nodejs中的JWT,我发现了刷新令牌 据我所知,用户获得一个访问令牌和一个刷新令牌。访问令牌过期后,将发出包含刷新令牌的请求以获取新的访问令牌。要获取新的访问令牌,服务器将检查接收到的刷新令牌是否包含在数据库中。如果刷新令牌被盗,可以很容易地将其从数据库中删除并防止进一步刷新 我的问题是:为什么我们不让访问令牌像刷新令牌一样工作呢?i、 e.我们将它们存储在数据库中,并在发出请求时检查它们是否在那里,如果遭到破坏,我们只需删除它们?回答您的问题的关键要素是:您需要在交付给客户的访

我只是在学习nodejs中的JWT,我发现了刷新令牌

据我所知,用户获得一个访问令牌和一个刷新令牌。访问令牌过期后,将发出包含刷新令牌的请求以获取新的访问令牌。要获取新的访问令牌,服务器将检查接收到的刷新令牌是否包含在数据库中。如果刷新令牌被盗,可以很容易地将其从数据库中删除并防止进一步刷新


我的问题是:为什么我们不让访问令牌像刷新令牌一样工作呢?i、 e.我们将它们存储在数据库中,并在发出请求时检查它们是否在那里,如果遭到破坏,我们只需删除它们?

回答您的问题的关键要素是:您需要在交付给客户的访问令牌上添加过期日期。这是刷新令牌的主要用途

假设有人使用了你的访问令牌,而你没有让它过期:这意味着只要你没有发现你的访问令牌被偷了,你就给了拥有它的人一张终身免费通行证

使用刷新令牌和过期访问令牌,您知道漏洞窗口非常小

现在,您的第二个问题是:为什么我们不让access\u令牌的行为类似于refresh\u令牌

这里的关键思想是将刷新令牌保持在一个安全的位置,并且只公开访问令牌

顺便说一下,刷新令牌有一个任务:携带信息以生成新的访问令牌,另一方面,访问令牌有自己的任务:携带必要的信息以直接访问资源


如果你注意大多数严肃网站,它们有一个集中的身份验证服务器,提供访问令牌。

我理解让访问令牌过期的想法。但我仍然不明白,刷新令牌如何比访问令牌更安全地保存?它们都被发送到客户端,唯一的区别是访问令牌随每个请求一起发送,刷新令牌大约每15分钟发送一次。提前谢谢!