如何处理JWT过期

如何处理JWT过期,jwt,Jwt,我有一个问题是“让浏览器在第六天发送一个交换新令牌的请求。因此,在服务器端,创建一个名为/token/extend的restful API,如果提供了有效令牌,它将返回一个新令牌。” 让我们假设我实现了这个概念。当令牌即将到期时,如果提供旧的有效令牌,我们将生成新的有效令牌 现在,让我们假设,黑客得到了令牌。他使用此令牌与API通信。黑客通信6天。在第6天,我们的“/token/extend”API将为他生成新的令牌,这样他可以再通信6天,甚至可能永远通信。这种情况会发生吗?还是我遗漏了什么?强

我有一个问题是“让浏览器在第六天发送一个交换新令牌的请求。因此,在服务器端,创建一个名为/token/extend的restful API,如果提供了有效令牌,它将返回一个新令牌。”

让我们假设我实现了这个概念。当令牌即将到期时,如果提供旧的有效令牌,我们将生成新的有效令牌


现在,让我们假设,黑客得到了令牌。他使用此令牌与API通信。黑客通信6天。在第6天,我们的“/token/extend”API将为他生成新的令牌,这样他可以再通信6天,甚至可能永远通信。这种情况会发生吗?还是我遗漏了什么?

强迫用户在6天后获得新令牌的一般方法是简单地将JWT声明中的
exp
字段(到期)设置为6天后到期。用户获取新令牌的确切机制取决于您的实现

最基本的实现是让第六天的传入请求失败,迫使API的使用者重定向到登录页面。从那里,用户必须再次登录才能获得新的有效JWT。更复杂的方法将使用刷新令牌。使用这种方法,当用户第一次登录时,他将收到一个6天到期的身份验证令牌(与以前一样),但也将收到一个稍晚到期的刷新令牌。在第六天,当用户尝试访问服务时,请求将再次失败。然而,在这种情况下,消费者(例如网站或移动应用程序)可以使用刷新令牌并在引擎盖下请求新的访问令牌。这将是一种更加无缝的方式来处理强制性6天到期。请注意,使用刷新令牌方法,用户可能永远不会知道6天到期


关于你对黑客获取他人代币的担忧,你应该忘记这一点。如果有人偷了你的钱包,他可能会对你造成各种各样的破坏,例如使用你的信用卡、窃取你的身份等。同样的情况也可能发生在被盗/嗅探的JWT身上。这里的最佳实践是确保所有通信都使用双向SSL,并鼓励用户不要在网吧之类的地方使用您的服务。

一般情况下,您可以通过设置
exp
字段(过期)来强制用户在6天后获得新令牌JWT的索赔要求在6天后到期。用户获取新令牌的确切机制取决于您的实现

最基本的实现是让第六天的传入请求失败,迫使API的使用者重定向到登录页面。从那里,用户必须再次登录才能获得新的有效JWT。更复杂的方法将使用刷新令牌。使用这种方法,当用户第一次登录时,他将收到一个6天到期的身份验证令牌(与以前一样),但也将收到一个稍晚到期的刷新令牌。在第六天,当用户尝试访问服务时,请求将再次失败。然而,在这种情况下,消费者(例如网站或移动应用程序)可以使用刷新令牌并在引擎盖下请求新的访问令牌。这将是一种更加无缝的方式来处理强制性6天到期。请注意,使用刷新令牌方法,用户可能永远不会知道6天到期

关于你对黑客获取他人代币的担忧,你应该忘记这一点。如果有人偷了你的钱包,他可能会对你造成各种各样的破坏,例如使用你的信用卡、窃取你的身份等。同样的情况也可能发生在被盗/嗅探的JWT身上。这里的最佳实践是确保所有通信都使用双向SSL,并鼓励用户不要在网吧之类的地方使用您的服务