如何立即撤销特定用户的jwt访问令牌?

问题描述 投票:0回答:1

我有一个有效期很短(5分钟)的访问令牌和刷新令牌。

我如何立即撤销特定用户的访问令牌?

例如,如果我想禁止某个用户?我点击了禁止按钮,现在我想立即撤销他的访问令牌。我不想等待令牌到期。

我需要以某种方式创建令牌黑名单,但如果我不知道特定用户的访问令牌,我如何将其添加到黑名单中?

我应该将所有的jwt令牌存储在数据库中还是redis中?代码示例将是非常有用的。

谢谢你的帮助

node.js express jwt passport.js
1个回答
0
投票

我不认为有一个库,可以帮助你。废弃 立即一个签名的令牌。但是是的,你可以 白名单 储存在一个DB中,比如PostgreSQL或MongoDB。但由于性能问题,最好将它们存储在 Redis. 当一个 refresh_token 的签名,然后将其设置为Redis。在refresh_token端点中,你验证并使用refresh_token来发布新的访问令牌,检查该refresh_token是否存在于DB中。如果不存在,那么它就是无效的。

但是你如何撤销它们,或者从DB中删除它们,使它们无效呢?你可以创建一个 登出 端点,从数据库中删除该refresh_token。

顺便说一下。 我发现,最好的做法是对那些... JWT 在存储到数据库之前,然后你知道比较它,以及所有这些东西。这种方式更安全,因为任何有权限访问你的DB的人,在这种情况下,Redis,可以使用一个已经有效的refresh_token。

© www.soinside.com 2019 - 2024. All rights reserved.