JWT token expiration_delta 和 JWT Refresh Expiration Delta 之间的区别 django jwt
Difference between JWT token expiration_delta and JWT Refresh Expiration Delta django jwt
我正在使用 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(秒=300)(5 分钟)。
和JWT_REFRESH_EXPIRATION_DELTA
文档:
令牌刷新,是一个 datetime.timedelta 实例。这是在原始令牌之后可以刷新未来令牌的时间。
默认值为 datetime.timedelta(days=7)(7 天)。
我不确定不同的用例。我将 jwt 令牌过期增量设置为 20 秒。
然后得到一个令牌将其保存到本地等待 20 秒关闭我的浏览器window 并重新导航到该站点
预计不会登录,因为令牌会过期但我已登录。
那么 JWT 令牌过期增量有什么区别
和 JWT 刷新过期增量?
JWT_EXPIRATION_DELTA
是您的 JWT 令牌生效的实际时间。在 JWT_EXPIRATION_DELTA
中提到的时间之后,无论何时您将使用此令牌访问安全端点(启用了 JWT 身份验证),它都会 return 一条错误消息 Your JWT Token has been expired
。因此,您需要在 JWT Token 过期之前不断刷新它。根据文档:
Refresh with tokens can be repeated (token1 -> token2 -> token3), but this chain of token stores the time that the original token (obtained with username/password credentials), as orig_iat. You can only keep refreshing tokens up to JWT_REFRESH_EXPIRATION_DELTA
这意味着无论您刷新令牌多少次,它都会始终记录您第一次生成令牌的原始时间(第一次登录用户)。因此,如果 JWT_REFRESH_EXPIRATION_DELTA
设置为 1 天,您将无法在生成原始令牌后的 1 天后继续刷新 JWT 令牌(意味着您的第一个令牌生成时间)。
不知道您使用什么机制在前端检查用户是否已通过身份验证。但是如果你在后端使用它来检查它(DRF-JWT 提供了一些现成的端点来验证和刷新令牌),你会发现它不起作用。
我正在使用 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(秒=300)(5 分钟)。
和JWT_REFRESH_EXPIRATION_DELTA
文档:
令牌刷新,是一个 datetime.timedelta 实例。这是在原始令牌之后可以刷新未来令牌的时间。
默认值为 datetime.timedelta(days=7)(7 天)。
我不确定不同的用例。我将 jwt 令牌过期增量设置为 20 秒。
然后得到一个令牌将其保存到本地等待 20 秒关闭我的浏览器window 并重新导航到该站点
预计不会登录,因为令牌会过期但我已登录。
那么 JWT 令牌过期增量有什么区别
和 JWT 刷新过期增量?
JWT_EXPIRATION_DELTA
是您的 JWT 令牌生效的实际时间。在 JWT_EXPIRATION_DELTA
中提到的时间之后,无论何时您将使用此令牌访问安全端点(启用了 JWT 身份验证),它都会 return 一条错误消息 Your JWT Token has been expired
。因此,您需要在 JWT Token 过期之前不断刷新它。根据文档:
Refresh with tokens can be repeated (token1 -> token2 -> token3), but this chain of token stores the time that the original token (obtained with username/password credentials), as orig_iat. You can only keep refreshing tokens up to JWT_REFRESH_EXPIRATION_DELTA
这意味着无论您刷新令牌多少次,它都会始终记录您第一次生成令牌的原始时间(第一次登录用户)。因此,如果 JWT_REFRESH_EXPIRATION_DELTA
设置为 1 天,您将无法在生成原始令牌后的 1 天后继续刷新 JWT 令牌(意味着您的第一个令牌生成时间)。
不知道您使用什么机制在前端检查用户是否已通过身份验证。但是如果你在后端使用它来检查它(DRF-JWT 提供了一些现成的端点来验证和刷新令牌),你会发现它不起作用。