哪种JWT刷新策略更安全?

问题描述 投票:9回答:1

基本思想是,用户会话应该很长,并且应根据用户活动来继续/禁用。但是,由于我们无法撤消令牌,因此令牌应该是短期的,例如15分钟。如果我们可以在令牌过期后刷新令牌,则可以继续进行用户会话。

经过一些研究,我发现有两种实现此目的的方法:

1。具有两个TTL的JWT令牌。

一个用于刷新到期,一个用于令牌到期。刷新TTL比令牌到期TTL长。如果客户端发现当前令牌已过期但仍可以刷新,则客户端将调用服务器刷新API。新令牌将具有新的到期时间和刷新到期时间。如果两个TTL都到期,则该令牌无效,并且要求用户再次进行身份验证。优点*不需要其他身份验证服务器。*令牌的数据可以修改,以便在特定情况下可以替换会话。缺点*无法撤销刷新令牌。

2。两个令牌,一个由身份验证服务器保存的刷新令牌,一个用于访问应用程序的访问令牌。

例如,刷新令牌的寿命很长,例如一周。访问令牌(此处可以使用JWT)是短暂的,例如15分钟。客户端每次持有两个令牌时,都会发现访问令牌过期(可以从访问令牌的有效负载中读取),它将与刷新令牌一起进入身份验证服务器,要求新的访问令牌。

Pros

  • 刷新令牌可能会被撤消,因为它存储在身份验证服务器中。

缺点

  • 需要其他身份验证服务器。

问题

假设在选项1中,令牌到期时间为15分钟,令牌到期和刷新到期之间的时间间隔也为15分钟。在选项2中,访问令牌到期时间为15分钟,刷新令牌到期为一周。

普通用户

继续使用应用程序
  • 两个选项都可以很好地刷新令牌,用户体验相同。
登出
  • 选项1:令牌仍然有效。在最多30分钟后,令牌无效。
  • 选项2:立即撤消刷新令牌。访问令牌最多仍可使用15分钟。
关闭浏览器而不注销。
  • 选项1:令牌最多30分钟后失效。
  • 选项2:“刷新令牌”仍然最多有效期为一周。当然,它可以记录将刷新令牌用作上一个活动以缩短此时间窗口的时间。

恶意用户(尝试窃取每个令牌)

登出
  • 选项1:尝试访问刷新API,以使令牌保持刷新状态并可用。
  • 选项2:刷新令牌已关闭。访问令牌最多仍可使用15分钟。
关闭浏览器而不注销。
  • 选项1:尝试访问刷新API,以使令牌保持刷新状态并可用。
  • 选项2:尝试使用刷新令牌访问身份验证服务器,因此将始终生成访问令牌。

我的问题是,选项2比选项1更安全吗?

我们的产品当前仅使用分发会话来存储用户信息。我们希望消除对身份验证服务器和会话的使用,但是安全是我们的首要任务。选项2没有太多优势。

我误解了某些东西还是错过了更好的令牌控制策略?任何建议将不胜感激。

security token jwt
1个回答
1
投票

具有刷新令牌的唯一点是允许更新用户会话,而无需让用户再次输入密码。

让我们分解几个用例

高度敏感的应用中的短暂会话

考虑在银行网站,支付网站或公共云中的会话(AWS管理员令牌可以删除下面的所有公司)。>>

  • 极其敏感的信息。
  • 会话有意地限制在很短的时间(5分钟到1小时)。
  • 用户在到期后必须再次使用密码(和2FA)登录。不支持续订。
  • 对于业务应用程序(如AWS),会话可能会更长(12h =工作日),以避免员工在一天内不断进行身份验证。
  • 个人提示:不要为无效(或缺乏无效)而烦恼,令牌会在您意识到它们被盗/泄漏并对它采取任何措施之前很久就过期。如果强迫用户每15分钟重新登录一次,shoulder surfing是否是一个更大的问题。
  • 对于此用例,必须在没有用户再次认证的情况下扩展会话,因此刷新令牌没有意义。提供短期访问令牌,根本不提供刷新令牌(可以在OIDC提供程序中将其禁用)。

移动应用程序的超长寿命会话

考虑在移动应用程序中的会话,可以是游戏,也可以是应用程序(facebook)。

  • 没有敏感信息(一个人可能认为他们的Facebook敏感,但是与gmail或银行完全不同)
  • 会议可能会持续一段时间。 (您是否曾经必须在facebook或tinder上再次进行身份验证?)
  • 在移动设备上(重新)输入密码是一个巨大的PITA。 (一定比例的用户在必须时不会再回来。他们经常不记得或不想麻烦)。
  • 手机相对安全。即使被盗,小偷通常也无法解锁屏幕或访问设备/应用程序的存储。
  • 在此用例中,会话可以存活很长时间会很好,但是重要的是能够取消它们(设备丢失或被盗)。交付一天的访问令牌,并交付3个月的刷新令牌。

打开应用程序后,它可以请求带有刷新令牌的新会话,然后使用它。可以通过使刷新令牌无效来撤消设备访问权限(例如,参见facebook / gmail中的“我的活动设备”)。

[只有很小的缺点是,如果几个月没有使用该应用程序,则用户必须再次进行身份验证,这在我看来是合理的。 (市场营销/增长部门的观点可能有所不同,他们可能会要求将其延长-无限吗?-

。最好不要使其延长一年以上。]

我在这里关注移动应用程序,但是网站在某种程度上可以相似。区别在于,尽管最终用户有大量的恶意软件/广告可能会把它们吸引出去,但笔记本电脑/台式机上的(浏览器)Cookie非常容易提取。因此环境不太值得信赖,这是存储长期令牌的关注点。

内部网中的透明SSO和续订会话
  • TODO:明天添加。到目前为止已经花了半个多小时写]

© www.soinside.com 2019 - 2024. All rights reserved.