Django Rest框架中的JWT令牌



我正在构建一个使用JWT认证的Django Rest框架API。我已经创建了访问令牌和刷新令牌,并将它们发送给用户。

我还有一个刷新令牌端点,它将接受旧的刷新令牌并生成新的令牌对并发送给用户。

我对其行为相关部分表示怀疑。目前我可以看到,每当我使用以前的刷新令牌创建新的访问和刷新令牌对时,旧的访问令牌也在工作,新的访问令牌也在工作。

然而,有一次当我使用OAuth2.0(在不同的情况下),我观察到,在这种情况下,如果我们创建了新的刷新令牌,旧的访问令牌将无法工作。

但是如果我在DRF中实现JWT,这种事情就不会发生。我没有在数据库中存储令牌。

所以我想知道这是任何实现特定的问题,还是它只是JWT的属性,如果是属性,那么请与我分享一些细节。

谢谢。

根据JWT介绍:

JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。jwt可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。

您可以编码的值之一是'exp',它表示过期日期。这就是为什么您的旧令牌不会过期,因为它们的过期日期仍然有效,并且任何其他声明都没有改变。"刷新"令牌背后的想法是提供具有更大exp值的新令牌。换句话说,您现在不应该期望授权失败,因为旧令牌仍然是正确的。

也不存储在数据库中(关于这一点,我还建议阅读@sdoxsee

提供的答案)

最新更新