我有一个查询,是否可以在用户注销后使用当前的JWT?
场景:我有一组私有API,需要授权令牌才能访问端点。在这里,我有一个Web应用程序,我需要登录并获取JWT。我将令牌放在一边,并且从活动会话中按下注销按钮,即使我能够使用JWT访问端点,我的会话也需要到期,这将如何发生这是正确的方法或者我可以提出这个作为一个错误?
答案 0 :(得分:1)
这是怎么回事?
会话详细信息可能存储在JWT本身中,并且没有相同的服务器端状态。每次发送JWT时,他们都会尝试对其进行解密,然后验证其中的声明并提供所需的访问权限。由于JWT本身包含其到期信息,因此无法使其失效。它将在令牌创建时确定的指定时间后过期。他们可能只是在注销时清除cookie。
这是正确的做法吗?
取决于。它是速度和安全性之间的权衡。为了撤销令牌访问,应该有一个服务器状态来维护一组访问/撤销令牌。如果应用程序未存储任何机密/敏感信息,则其设计要求他们选择服务器状态。如果站点位于https上并且没有XSS,则以某种方式获取令牌的唯一方法是获取对设备的物理访问权限。如果访问令牌的到期时间少于20分钟,则风险很小。但它主要取决于应用的性质。例如,这不是银行应用程序的正确方法。
我可以提出错误吗?
你应该确认这个假设。他们实际上可能有一个基础设施来撤销访问令牌,但它现在有问题。