每个用户的秘密JWT

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

我正在尝试实现允许用户注销用户已登录的所有设备的Rest Endpoint。

我正在研究每个用户动态生成的秘密。我目前正在尝试将some_global_secret +user_email+ random_uuid作为秘密。

允许用户登录和注销多个设备。以及用户是否要注销所有设备。我需要做的只是为用户生成一个新的密钥,其余所有令牌现在将无效。如果用户更改了密码,则可以选择只注销当前设备还是注销所有其他设备。

但是这种方法的最大缺陷是,我需要每次都传递用户的电子邮件才能解密令牌。

什么是最好的方法?对所有用户拥有一个秘密将在注销所有设备时具有更复杂的逻辑,它不像生成一个新秘密那样容易,因为这将使所有人注销。

我想将编码的电子邮件作为某种标头传递,客户端必须为所有受保护的端点传递该标头。这是个好方法吗?

任何指导将不胜感激

security jwt secret-key
1个回答
0
投票

有趣的想法。

您可以将您的想法扩展到JWT内部的已签名有效负载。本质上是JWT中的JWT。外部JWT用一个共同的秘密签名。内部JWT使用每个用户的秘密进行签名。您验证外部JWT(这将为您提供用户参考),然后尝试验证内部JWT。如果不能(因为用户的机密已被转出),它将失败。

内部字段不必一定是另一个JWT;它实际上只需要签名(例如HMAC),就可以使用当前的每用户机密进行验证。

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