2017-02-19 61 views
3

我对JWT非常新,我最终继承了使用JWT的代码库。现在我面临一些非常基本的问题,我没有找到任何答案。这个问题不是基于代码的,所以请耐心等待。JWT令牌刷新(滑动会话)和注销

让我们说我的JWT令牌有效期为4小时。这是我的要求/限制

  1. 如果用户在3小时59分钟工作。他们的会议应该延长2小时,他们不应该被要求重新输入凭证。

  2. 客户端Java脚本不得以任何方式缓存用户凭证。

  3. 使用新的JWT令牌刷新是可以的......但是您不得在服务器上发出的每个请求中执行此操作。因此,当时机成熟时,客户端必须具有智能才能刷新JWT令牌。您不得尝试在对应用程序提出的每个请求中发出新的令牌,因为我们最终会出现在会话过程中生成1000个有效令牌的场景中,并且所有这些令牌都处于活动状态。这使得登出要求更加困难。

  4. 一旦用户点击登出。 JWT令牌不应再可用。即使它的生命时间仍然有效。

  5. 如果发生登录。发布的所有令牌(作为会话扩展的一部分)应该失效。不只是最后一个。

我开始阅读有关JWT的内容,但看起来我的要求似乎不能满足JWT的要求。这些要求很容易满足会话id方法。但我不想放弃智威汤逊。

回答

3

JWT延寿

您可以用旧发出JWT。您的客户端应用程序在接近到期时间时必须请求新的JWT。客户知道到期时间读取exp索赔,并可以调用刷新服务来获取新的令牌。如果客户端应用程序被关闭,则JWT将到期,这将是需要用户再次出示证件

注销

建议让令牌到期,但您可以使用黑名单店JWT是仍然有效,但不能用于身份验证:

  • 当用户点击注销

  • 后关闭刷新票expiratio n time

您需要向JWT添加唯一标识jti。黑名单将包含jtiexp。一旦当前时间>exp条目可以被丢弃。

请参阅Invalidating client side JWT session