rgw*_*zdz 6 security authorization jwt express-jwt json-web-token
我是基于令牌的授权的新手.我试图找到自定义到期/令牌刷新方案中的缺陷.
我在Express API中有一个基本的JWT auth设置; 我将JWT到期时间定为1小时; 但是,JWT会检查令牌到期时相对于令牌发出的时间.我希望在每次成功的api调用之后重置到期时间.如果我的用户正在使用该应用程序超过一个小时,我不希望他们必须重新登录才能刷新令牌(并且可能会丢失他们正在处理的任何数据.)
另一方面,如果令牌超过一小时没有响应,我确实希望令牌过期.
我想出了以下方法:
在每个成功的API请求期间,发出新的JWT并将其发送到自定义响应标头中.我的客户端代码负责检查此JWT响应头并将其值用作新的默认授权请求头.因此,如果用户没有超过1小时的API请求,则令牌将过期而不会刷新.然后需要登录.此外,将存储令牌的原始发布日期(登录验证的时间戳),以便在24小时后强制执行令牌的"硬到期".
这似乎相当简单且相当安全,但我在JWT研究中没有看到任何参考.有没有更好的方法来实现同一目标?我是否错过了这种方法的主要安全漏洞?
更新: 在考虑了一段时间之后,我意识到这个问题是它打开了重播攻击的大门,这些攻击无法被令牌过期所阻止.因此,绝对应该进行"硬到期"检查:无论最近的用户活动如何,硬到期都会在发布日期后的某个时间使令牌无效.
小智 3
在这里您可以检查我对这种情况的回答: implementingfresh-tokens with Angular andexpress-jwt
我所做的是有一个时间窗口,服务器检查令牌过期和本地服务器时间是否在此窗口内,然后发送带有刷新令牌的响应标头。
归档时间: |
|
查看次数: |
2407 次 |
最近记录: |