当前位置: 首页 > 知识库问答 >
问题:

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

湛铭
2023-03-14

我有短过期(5分钟)的访问令牌和刷新令牌。

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

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

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

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

非常感谢。

共有1个答案

翁昊乾
2023-03-14

我不认为有一个库可以帮助您立即使签名令牌无效。但是,是的,您可以将它们列入数据库的白名单,例如PostgreSQL或MongoDB。但是,由于性能问题,最好将它们存储在Redis中。当refresh_token被签名时,然后将其设置为Redis。在refresh_tokenendpoint中,您验证并使用refresh_token颁发新的访问令牌,检查数据库中是否存在refresh_token。如果没有,则无效。

但是如何撤销它们,或者从数据库中删除它们,使它们无效呢?创建注销终结点,从数据库中删除refresh_token。

仅供参考:我发现在将JWT存储在数据库中之前对其进行散列是一种很好的做法,然后进行比较,诸如此类。这样更安全,因为任何有权访问数据库的人(在这种情况下是Redis)都可以使用已经有效的refresh_token。

 类似资料:
  • 正如这里提到的http://projects.spring.io/spring-security-oauth/docs/oauth2.html,撤销是通过刷新令牌完成的。但这似乎不起作用。

  • 我使用Keycloak来保护我的react前端和Node.js后端。这些客户端使用基于角色的授权进行保护。 我尝试这个endpoint来撤消用户访问令牌。但不起作用/auth/admin/realms//users/ 是否有方法在Keycloak中撤销特定用户的访问令牌?

  • 当我想要注销时,我调用以下代码: 怎么修?

  • 我正在使用无服务器框架将无服务器堆栈部署到AWS。我的堆栈由一些lambda函数、DynamoDB表和API网关组成。 我使用所谓的lambda授权程序来保护API网关。另外,我有一个自定义的独立自托管Auth服务,可以生成令牌。 下面是我的Serverless.yml中的lambda授权程序定义的一个示例,以及我如何使用它来保护其他API网关endpoint:(您可以看到addUserInfo函

  • 问题内容: 我在hapijs中使用jwt插件和策略。 我可以在登录用户时创建jwt令牌,并通过’jwt’策略使用同一令牌对其他API进行身份验证。 我将令牌设置为cookie,其中是令牌名称。另外,我没有将这些令牌保存在数据库中。 但是,注销时如何销毁jwt令牌? 请提出一种方法。 问题答案: JWT存储在浏览器中,因此删除令牌以删除客户端的cookie 如果您还需要在令牌到期之前从服务器端使令牌

  • 我很难让Auth0以JWT格式返回访问令牌。我需要JWT格式的文件,以便使用javajwt库验证它们。 我正在使用Auth0登录,并使用获取访问令牌-我尝试将访问群体设置为我们的API标识符(在多个位置,包括lock auth参数和负载),但没有成功-返回访问令牌,但不是JWT。 或者,是否有用于验证“本机”Auth0访问令牌的Java库? 返回的代码用于POST到