gpt4 book ai didi

authentication - 刷新 token 有什么意义?

转载 作者:行者123 更新时间:2023-12-03 07:03:40 24 4
gpt4 key购买 nike

我必须承认这个问题我已经思考了很长时间,但从未真正理解过。

假设身份验证 token 就像保险箱的 key ;过期后就不能再使用了。现在我们得到了一个魔法刷新 token ,它可以用来获取另一个可用的 key ,还有另一个……直到魔法 key 过期。那么为什么不将身份验证 token 的过期时间设置为与刷新 token 相同呢?为什么要这么麻烦呢?

这是什么原因呢?这是历史事件吗?

最佳答案

我正在读一篇article有一天,Taiseer Joudeh 写的,我发现它非常有用,他说:

在我看来,使用刷新 token 有三个主要好处:

  1. 更新访问 token 内容:如您所知,访问 token 是自包含 token ,一旦生成,它们就包含有关经过身份验证的用户的所有声明(信息),现在如果我们颁发长期 token (1 个月)例如)对于名为“Alex”的用户并将其注册为“Users”角色,则此信息将包含在授权服务器生成的 token 中。如果您稍后决定(在他获得 token 后 2 天)将他添加到“管理员”角色,则无法更新生成的 token 中包含的此信息,您需要要求他再次重新进行 self 身份验证因此,授权服务器将此信息添加到新生成的访问 token 中,但这在大多数情况下不可行。您可能无法联系获得长期访问 token 的用户。因此,为了解决这个问题,我们需要颁发短期访问 token (例如30分钟)并使用刷新 token 来获取新的访问 token ,一旦获得新的访问 token ,授权服务器将能够为用户添加新的声明一旦生成新的访问 token ,“Alex”就会将他分配给“管理员”角色

  2. 撤销经过身份验证的用户的访问权限:一旦用户获得长期访问 token ,只要其访问 token 未过期,他就可以访问服务器资源,没有标准方法可以撤销访问 token ,除非授权服务器实现自定义逻辑,强制您将生成的访问 token 存储在数据库中并对每个请求进行数据库检查。但是,使用刷新 token ,系统管理员只需从数​​据库中删除刷新 token 标识符即可撤销访问权限,因此一旦系统使用已删除的刷新 token 请求新的访问 token ,授权服务器将拒绝此请求,因为刷新 token 不再可用(我们将提供更多详细信息)。

  3. 无需存储或询问用户名和密码:使用刷新 token ,您只需在用户第一次进行身份验证后询问用户名和密码一次,然后授权服务器就可以发出很长的生命周期刷新 token (例如 1 年),除非系统管理员尝试撤销刷新 token ,否则用户将在整个期间保持登录状态。您可以将其视为离线访问服务器资源的一种方式,如果您正在构建一个将由前端应用程序使用的 API,而在前端应用程序中频繁询问用户名/密码是不可行的,那么这会很有用。

关于authentication - 刷新 token 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com