我是JWT的新手,我最终继承了使用JWT的代码库。现在有一些我面临的非常基本的问题,我找不到任何答案。这个问题不是基于代码的,所以请忍受我。
让我们说我的JWT令牌有效期为4个小时。这是我的要求/约束
-
如果用户在3小时59分钟时工作。他们的会议应延长2个小时,不应要求他们重新输入凭证。
-
客户端Java脚本不得以任何方式缓存用户凭据。
-
可以使用新的jwt代币刷新JWT令牌...但是您不得在服务器上提出的每个请求中执行此操作。因此,客户必须在适当的时候智能刷新JWT令牌。您不得尝试对您对应用程序提出的每个请求发出新的令牌,因为我们最终会在会话过程中生成1000秒的活动令牌,并且所有这些都有活动性。这使签名要求更加困难。
-
用户单击签名后。JWT令牌不应再可用。即使其终身时间仍然有效。
-
如果发生签名。所有发行的令牌(作为会议扩展的一部分)都应无效。不仅是最后一个。
我开始阅读有关JWT的文章,但是JWT似乎无法满足我的要求。这些要求很容易满足会话ID方法。但是我还不想放弃JWT。
JWT Life Extension
您可以与旧的JWT发行JWT。您的客户端应用必须在接近到期时间时请求新的JWT。客户知道阅读exp
索赔的到期时间,并可以调用刷新服务以获取新的令牌。如果客户端应用关闭,则JWT将过期,并且用户必须再次出示凭据
注销
建议让令牌过期,但是您可以使用黑名单来存储仍然有效但不能用于身份验证的JWT:
-
用户单击注销
-
在接近到期时间的售票后
您需要添加到JWT唯一标识符jti
。黑名单将包含jti
和exp
。当前时间> exp
可以丢弃条目。
请参阅无效的客户端JWT会话