JWT令牌刷新(滑动会话)和注销

Kno*_*uch 10 authentication refresh jwt

我是JWT的新手,最后我继承了一个使用JWT的代码库.现在我遇到了一些非常根本的问题,我找不到任何答案.这个问题不是基于代码的,所以请耐心等待.

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

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

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

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

  4. 用户点击退出后.JWT令牌不再可用.即使它的寿命仍然有效.

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

我开始阅读有关JWT的内容,但似乎JWT无法满足我的要求.使用会话ID方法很容易满足这些要求.但我还不想放弃JWT.

ped*_*ofb 12

JWT寿命延长

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

登出

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

  • 用户单击注销时

  • 刷新过期时间后的票证

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

请参阅使客户端JWT会话无效