【问题标题】:JWT token refresh (sliding sessions) and signoutJWT 令牌刷新(滑动会话)和注销
【发布时间】:2017-07-08 20:57:54
【问题描述】:

我对 JWT 很陌生,我最终继承了一个使用 JWT 的代码库。现在我面临一些非常基本的问题,但我没有找到任何答案。这个问题不是基于代码的,所以请多多包涵。

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

  1. 如果用户工作时间为 3 小时 59 分钟。他们的会话应延长 2 小时,并且不应要求他们重新输入凭据。

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

  3. 可以用新的令牌刷新 JWT 令牌...但您不能对服务器上的每个请求都执行此操作。因此,客户端必须在适当的时候智能地刷新 JWT 令牌。您不得尝试在您向应用程序发出的每个请求上发布新令牌,因为我们最终会遇到这样一种情况,即我们在会话过程中生成了 1000 个活动令牌并且所有这些令牌都处于活动状态。这使得登出要求更加困难。

  4. 一旦用户点击退出。 JWT 令牌应该不再可用。即使它的生命周期仍然有效。

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

我开始阅读有关 JWT 的信息,但 JWT 似乎无法满足我的要求。使用 session id 方法很容易满足这些要求。但我还不想放弃 JWT。

【问题讨论】:

    标签: authentication jwt refresh


    【解决方案1】:

    JWT 寿命延长

    您可以使用旧的 JWT 发出 JWT。您的客户端应用程序必须在接近到期时间时请求新的 JWT。客户端知道读取exp 声明的到期时间,并且可以调用刷新服务来获取新令牌。如果客户端应用程序关闭,则 JWT 将过期,用户需要再次出示凭据

    退出

    建议让令牌过期,但是可以使用黑名单来存储仍然有效但不能用于认证的JWT:

    • 当用户点击注销时

    • 刷新票据后接近到期时间

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

    Invalidating client side JWT session

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 2017-08-18
      • 2021-03-11
      • 2015-12-31
      • 2021-10-05
      • 1970-01-01
      • 2021-12-14
      • 2018-09-29
      • 2016-03-05
      相关资源
      最近更新 更多