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

注销/使JWT无效

袁玮
2023-03-14

我通过在自定义登录API中生成JWT(JSON Web Token)在Azure移动服务中使用自定义身份验证。一旦用户拥有JWT,它将一直有效,直到达到其编码的过期时间。

除了在每个经过身份验证的请求上根据会话表显式检查JWT令牌之外,是否有办法在JWT令牌到期之前使其失效(当用户注销时会发生这种情况),以便任何后续使用该令牌作为X-ZUMO-AUTH头中的值发出的请求都不会到达任何表API或自定义API脚本?

共有3个答案

潘智刚
2023-03-14

不可以。注销用户并使JWT令牌无效的唯一方法是将其从会话表中删除。这就是你已经在做的事情。

应和悦
2023-03-14

支持JWT失效(总是有原因):

我最终为每个用户存储了一个唯一的字符串,我用一个全局通用字符串对其进行散列,这样我就可以根据需要使单个用户的令牌或所有令牌无效。

须景辉
2023-03-14

不是真的。当用户在客户端注销时,它使用的JWT并没有真正失效——它只是从客户端内存中删除(例如,请参阅托管SDK上的代码)。JWT验证是通过对照移动服务的主密钥检查其签名来完成的,除非更改此密钥(这将使您服务的所有JWT令牌无效,我认为这不是您想要的),否则令牌将一直有效,直到过期为止。

由于您自己生成JWT,因此可以考虑使用更短的过期时间,这对您的情况可能会有所帮助。

您也可以在移动服务的反馈论坛中建议此功能。我创建了一个相关的功能建议,您也可以考虑添加一条评论并投票支持。

 类似资料:
  • 我使用这个示例https://dzone.com/articles/spring-boot-security-json-web-tokenjwt-hello-world创建带有json web令牌(JWT)的spring boot rest api。但是我没有找到任何使用io.jsonWebToken maven依赖项强制注销的api。 我正在pom中使用此依赖项: 任何一个可以告诉我这个依赖,提

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

  • 嗨,我正在创建使用 REST API endpoint与服务器端通信的移动本机应用程序。 我以前有开发本机客户端的经验,但我将简单的令牌(随机生成的字符串)存储在存储用户信息的同一表中的数据库中。所以它就像浏览器中使用的会话,但每个请求的标头中都有令牌,而不是 cookie。 最近我发现了JWT令牌。这似乎是保护私有endpoint的好方法。您可以从移动客户端请求令牌,前提是您通过登录并获得生成的

  • 当他们注销时,问题就出现了。我读过,最好的方法是在Redis上将JWT列入黑名单,以存储被撤销的密钥。然而,由于JWT永远不会过期,因此该记录永远无法从Redis中删除,并且可以开始分块我的大量内存。 我应该担心这一点,还是Redis在这方面的记忆效率高?有没有更好的方法撤销JWT而不过期?

  • 我在springboot中用jwt令牌开发了一个oauth2服务器,我在注销时遇到了困难http://www.baeldung.com/spring-security-oauth-revoke-tokens 注销后,如果在头中提供令牌并点击/user,则它将提供所有用户信息,而应该抛出并错误地表示用户已注销

  • 我正在使用jwt auth在我的API中创建RESTful身份验证资源。当客户端应用程序调用登录资源时,如果用户已登录,则必须使当前令牌无效,从而生成新令牌。 但如果当前令牌被列入黑名单,则会抛出。 如何验证令牌是否被列入黑名单?或者如何正确执行用户“注销”?我试图在jwt auth API源代码上找到,但不存在