首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将刷新令牌重用为“记住我的令牌”?

是否可以将刷新令牌重用为“记住我的令牌”?
EN

Security用户
提问于 2021-09-30 02:04:09
回答 1查看 846关注 0票数 0

我有一个具有服务器-客户机架构的应用程序。服务器是REST/JSON,客户机通过HTTPS到达服务器。我目前有一个短期访问令牌(JWT,无状态,15分钟),它附加于每个经过身份验证的请求和一个长寿命的刷新令牌(随机,有状态,7天)。如果旧访问令牌已过期,则可以使用刷新令牌来交换新的访问令牌。

我的问题是,我是否需要一个客户端可以用来获得新的刷新令牌的更长的记忆令牌(例如30天),还是只需要延长刷新令牌的持续时间并将其用作记忆令牌?我是否将刷新令牌作为“记住我的令牌”重用,从而使自己面临某种攻击?

EN

回答 1

Security用户

发布于 2021-10-01 11:36:55

如果当前刷新令牌对多个用途有效,并且只有在其生存期超过时才到期,则可能会出现跟踪令牌重放和撤消令牌的问题(我假设这就是有状态令牌的意思吗?)理想情况下,刷新令牌应该只使用一次(因此出现了"nonce“声明)。您可以做的是刷新令牌旋转,即在交换访问令牌并使旧令牌无效后发出新的刷新令牌(此步骤至关重要,因为您现在可以检测到是否有恶意的第三方试图重用令牌并相应地采取行动,使其后继者无效或通知令牌是从哪个用户处获取的)。

实际上,只要刷新令牌生存期从未超过用户的无活动周期,用户就可以获得无限访问(如果用户在刷新令牌之前退出权限,则不考虑最多15分钟的小时间倾斜)。

这自然会带来其他问题,特别是当恶意用户在资源所有者缺席时间较长的一段时间内得到刷新令牌时,在后者也使用该令牌并检测到重播之前,几乎不可能检测到误用。的文章很好地解释了整个设置及其问题(我也从那里抓取了图像)。

如果您想避免潜在的无限误用,您可以在实际密码登录时在初始刷新令牌中添加某种类型的主过期日期,并由每个后续刷新令牌保存(如果设置为30天,用户将不可避免地在该期间后重新输入密码)。

最后,为了可用性起见,您将始终放松安全性,bit我认为“刷新令牌”不是这里的方法。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/255672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档