5

我正在构建一个需要身份验证的应用程序,我担心用户可能希望能够远程注销。有没有办法使用 JSON Web 令牌并能够将它们列入黑名单或拒绝它们?我知道他们的好处是无国籍,但是远程注销会很好。

编辑:使用 Express.js 使用 express-jwt 模块,有一种方法可以撤销 tokens。此外,还有一个模块express-jwt-blacklist。我仍然不明白这些策略是如何工作的,并且想知道此时的最佳实践是什么。

4

1 回答 1

3

关于 Auth0 有一篇关于将 JSON Web 令牌 API 密钥列入黑名单的好文章,其中提供了一个很好的真实示例,说明如何将 JWT API 密钥列入黑名单,使其不再有效。你应该读一读。

构筑问题

为将 JWT 列入黑名单提供支持会带来以下问题:

  1. JWT 是如何单独识别的?
  2. 谁应该能够撤销 JWT?
  3. 令牌如何被撤销?
  4. 我们如何避免增加开销?

这篇博文旨在通过利用我们在 API v2 中实现此功能的经验来回答前面的问题。

这篇文章分解了每一点,然后展示了一些关于如何实现它的示例代码,最后是:

上述大部分内容通常适用于将 JWT 列入黑名单,而不仅仅是 JWT API 密钥。

希望这篇博文就如何解决这个问题提供了一些有用的想法。

我个人应用了类似的方法来撤销多个登录,其中令牌的使用与会话 ID 类似并存储在 cookie 中。我将其建模为 GitHub 配置文件部分,用户可以在其中查看所有其他活动会话并在需要时撤销它们(远程注销)。

就最佳实践而言,我认为该主题将基于意见。但是,我确实将 Auth0 视为该 Topis 领域良好实践的来源,有很多人在这方面经验丰富。

更新:

在 npm 上找到了这个用于令牌黑名单的 express-jwt 插件

于 2016-04-09T07:32:00.593 回答