如果用户想从不同的机器上退出帐户,JSON Web 令牌 (JWT) 是不是会被拒绝或列入黑名单?
Posted
技术标签:
【中文标题】如果用户想从不同的机器上退出帐户,JSON Web 令牌 (JWT) 是不是会被拒绝或列入黑名单?【英文标题】:Can JSON Web Tokens (JWT) be rejected or blacklisted if a user wants to sign out of an account from a different machine?如果用户想从不同的机器上退出帐户,JSON Web 令牌 (JWT) 是否会被拒绝或列入黑名单? 【发布时间】:2016-07-30 13:26:15 【问题描述】:我正在构建一个需要身份验证的应用,我担心用户可能希望能够远程注销。有没有办法使用 JSON Web 令牌并能够将它们列入黑名单或拒绝它们?我知道他们的好处是无国籍,但是远程注销会很好。
编辑:Express.js 使用 express-jwt 模块,有一个method to revoke tokens。此外,还有一个模块express-jwt-blacklist。我仍然不明白这些策略是如何工作的,并且想知道目前的最佳做法是什么。
【问题讨论】:
【参考方案1】:关于 Auth0 有一篇不错的文章,关于 Blacklisting JSON Web Token API Keys 他们提供了一个很好的真实示例,说明如何将 JWT API 密钥列入黑名单,使其不再有效。你应该读一读。
解决问题
为将 JWT 列入黑名单提供支持会带来以下问题:
如何单独识别 JWT? 谁应该能够撤销 JWT? 如何撤销令牌? 我们如何避免增加开销?
这篇博文旨在通过利用我们的 在我们的 API v2 中实现此功能的经验。
文章分解了每一点,然后展示了一些关于如何实现它的示例代码,最后是:
上述大部分内容适用于将 JWT 列入黑名单 通用,而不仅仅是 JWT API 密钥。
希望这篇博文提供了一些有用的想法,说明如何 解决这个问题。
我个人使用了类似的方法来撤销多次登录,其中令牌的使用与会话 ID 类似,并存储在 cookie 中。我将其建模为 GitHub 个人资料部分,用户可以在其中查看所有其他活动会话并在需要时撤销它们(远程注销)。
就最佳实践而言,我认为该主题将基于意见。但是,我确实将 Auth0 视为该 Topis 领域良好实践的来源,很多人在这方面都有经验。
更新:
在 npm 上找到这个 express-jwt plugin for token blacklisting
【讨论】:
以上是关于如果用户想从不同的机器上退出帐户,JSON Web 令牌 (JWT) 是不是会被拒绝或列入黑名单?的主要内容,如果未能解决你的问题,请参考以下文章