首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JWT令牌expiration_delta与JWT Refresh Delta django jwt的区别

JWT令牌expiration_delta与JWT Refresh Delta django jwt的区别
EN

Stack Overflow用户
提问于 2018-05-09 16:51:03
回答 1查看 4.8K关注 0票数 7

我正在使用django rest框架JWT库

http://getblimp.github.io/django-rest-framework-jwt/

JWT令牌过期有两个设置

JWT_EXPIRATION_DELTA,以秒为单位

上的文档:

可以通过将JWT_VERIFY_EXPIRATION设置为False来关闭过期时间验证。如果没有过期验证,JWT将永远持续下去,这意味着攻击者可以无限期地使用泄漏的令牌。这是Python的datetime.timedelta的一个实例。这将添加到datetime.utcnow()中,以设置过期时间。

默认为datetime.timedelta(seconds=300)(5分钟)。

JWT_REFRESH_EXPIRATION_DELTA

文档:

mit的令牌刷新,是一个datetime.timedelta实例。这是在原始令牌之后需要多长时间才能刷新未来的令牌。

默认为datetime.timedelta(days=7) (7天)。

我不确定不同的用例。我将jwt令牌过期增量设置为20秒。

然后得到一个令牌,保存到本地,等待20秒,关闭我的浏览器窗口,然后重新导航到该站点。

预期不会登录,因为令牌将过期,但我已登录。

那么JWT令牌过期增量之间的区别是什么呢?

还有JWT Refresh Delta?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-09 17:14:29

JWT_EXPIRATION_DELTA是您的JWT令牌运行之前的实际时间。在JWT_EXPIRATION_DELTA中提到之后,每当您使用这个令牌访问一个安全端点(启用了JWT )之后,它将返回一个错误,其中包含消息Your JWT Token has been expired。因此,您需要在JWT令牌过期之前继续刷新它。根据文件:

可以重复使用令牌刷新(token1 -> token2 -> token3),但是这个令牌链将原始令牌(使用用户名/密码凭据获得)存储为orig_iat的时间。您只能将刷新令牌保持到JWT_REFRESH_EXPIRATION_DELTA。

这意味着,无论刷新多少次令牌,它都将始终保留生成第一个令牌时(第一次登录用户)的原始时间的记录。因此,如果JWT_REFRESH_EXPIRATION_DELTA设置为1天,则不能在生成初始令牌后1天后继续刷新JWT令牌(意味着您的第一个令牌生成时间)。

不知道您使用什么机制在前端签入,如果用户是经过身份验证的。但是,如果您使用在后端检查它(DRF提供了一些准备好的端点来验证和刷新令牌),您将发现它将无法工作。

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

https://stackoverflow.com/questions/50258431

复制
相关文章

相似问题

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