JWT:多个 public 密钥创建令牌并使用一个私钥解码

JWT : Multiple public keys to create a token and decode using one private keys

我有一个由多个客户端访问的 JWT 实现。从某种意义上说,多个客户端正在向我发送 JWT 令牌,并且他们正在使用我在他们之间共享的 RSA public 密钥创建 JWT 令牌。我正在使用 RSA 私钥解码 JWT 令牌。

但现在由于一些安全原因,我需要向他们发送不同的 public 密钥并将获得 JWT 令牌,我将使用我拥有的一个私钥对其进行解码。

简而言之,我将如何生成多个 public 密钥和单个私钥或任何类似的方法。

(...) send them different public keys and (...) decode it using one private key I have.

据我所知RSA私钥can only have one public key.

But now due to few security reasons I need to send them different public keys (...)

如果您必须向每个客户端发送不同的 public 密钥,它们仍然是“public”吗?

如果我很了解您的问题,我会建议您切换到具有证书(如 X.509)的 PKI,您是授权机构。 流程将是:

  1. 客户端生成私钥
  2. 客户创建 CSR
  3. 客户向您发送 CSR
  4. 您根据 CSR 使用您的 CA 生成证书
  5. 您发回 CRT
  6. 客户端使用其私钥对 JWT 进行签名
  7. 客户端向您发送 JWT
  8. 你和你的CA核实一下

使用此解决方案,您将获得客户端证书身份验证的所有好处。

如果在某个时候您不再信任某个客户端,您可以使用撤销列表。

顺便说一句,我从未见过这种流程...而且由于我不知道您到底想要实现什么,您应该将此作为对“我如何实现 使用 JWT 的客户端证书身份验证

他们每个人都应该有自己的私人签名密钥。他们签署了 JWT。然后他们用你的 public key/cert.

加密 JWT

您使用私钥解密 jwt。然后,您使用他们的 public key/cert.

验证每一方的签名

这样 JWT 就被加密了,只有你可以访问它。它已签名,因此您可以验证发件人