我有一个问题,“使浏览器在第六天发出交换新令牌的请求。因此,在服务器端,创建一个名为/ token / extend的静态API,如果该API会返回新令牌,获得有效的令牌。”
让我们假设我实现了这个概念。当令牌即将到期时,如果提供了旧的有效令牌,我们将生成新的有效令牌。
现在,让我们假设,黑客获得了令牌。他使用此令牌与API通信。黑客交流了6天。在第6天,我们的“ / token / extend” API将为他生成新的令牌,以便他可以再通信6天,甚至可能永远。会发生这种情况吗?还是我在这里想念东西?
答案 0 :(得分:0)
迫使用户在6天后获得新令牌的一般方法是,只需将JWT声明中的exp
字段(有效期)设置为在6天后过期。用户用来获取新令牌的确切机制取决于您的实现。
最基本的实现是仅在第六天让传入请求失败,从而迫使API的使用者重定向到登录页面。从那里,用户将不得不再次登录以获得新的有效JWT。更详尽的方法将使用刷新令牌。使用这种方法,当用户首次登录时,他将收到一个有效期为6天的身份验证令牌(与以前一样),但是 也将收到一个刷新令牌,该令牌将在稍后过期。在第六天,当用户尝试访问服务时,请求将再次失败。但是,在这种情况下,消费者(例如网站或移动应用)可以获取刷新令牌并在后台请求新的访问令牌。这将是处理6天强制性到期的更无缝的方法。请注意,使用刷新令牌方法,用户可能永远不会知道6天的有效期。
关于您对黑客获取他人令牌的担忧,您应该基本上就不用管它了。如果有人偷了你的钱包,他可能会对你造成各种各样的破坏。使用您的信用卡,窃取您的身份等。被盗/嗅探的JWT可能会发生同样的情况。此处的最佳做法是仅确保您使用双向SSL进行所有通信,并鼓励您的用户不要在网吧等地方使用您的服务。