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

JWT:使用多个公钥创建令牌并使用一个私钥进行解码

咸利
2023-03-14

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

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

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

共有2个答案

尉迟宪
2023-03-14

他们每个人都应该有自己的私人签名密钥。他们签署了JWT。然后他们用您的公钥/证书对JWT进行加密。

您可以使用私钥解密jwt。然后使用各方的公钥/证书验证各方的签名。

通过这种方式,JWT被加密,只有您可以访问它。它已签名,因此您可以验证发件人

艾宁
2023-03-14

(...)给他们发送不同的公钥,并(...)用我拥有的一个私钥解码。

据我所知,RSA私钥只能有一个公钥。

但现在由于一些安全原因,我需要向他们发送不同的公钥(…)

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

如果我很了解您的问题,我建议您在您是权威的情况下,使用带有证书(如X.509)的PKI。流程将是:

  1. 客户端生成私钥

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

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

顺便说一句,我从来没有见过这种流动。。。由于我不知道您到底想要实现什么,您应该将此作为“如何使用JWT实现客户端证书身份验证”的答案来阅读

 类似资料:
  • 我正在实施类似于:https://login.microsoftonline.com/common/discovery/v2.0/keys Spring boot JWT应用程序,用于生成和验证JWT令牌。我将生成许多公钥/私钥(我不想用一个密钥生成所有令牌。一个密钥对将生成生命周期较短的令牌,第二个密钥对将生成更长的令牌…)我将使用公钥创建endpoint/密钥。问题是:如何在我的应用程序中连接

  • 我正在为服务器编写发送电子邮件的模块。在客户端应用程序中,用户可以添加多个接收器,每个接收器都有自己的公钥。我想使用多个密钥加密附件。例如,如果我添加了3个接收者,那么附件应该用3个不同的公钥加密。我使用bouncy castle来实现这一点,但它只适用于加密过程中的第一个公钥。我的意思是只有第一个人可以使用自己的私钥解密,其余的都不起作用。我为每个键添加方法的代码如下所示: 整个方法看起来像:

  • 我试图理解使用带有私钥/公钥(RS512)的JSON Web令牌的逻辑,当将从客户端(在本例中是React Native App)发送到服务器的数据有效载荷签名时。 我认为私钥/公钥的全部意义在于将私钥保持为私钥(在我的服务器上),并将公钥交给成功登录应用程序的人。 我认为,对于我的服务器的每个API请求,经过身份验证的应用程序用户将使用公钥创建JWT(在客户端),服务器将使用私钥验证来自API请

  • 如果我使用getEncoded从Java中Bouncy Castle中的公钥或私钥获取实际密钥(实际类似乎是BCECPublicKey和BCECPrivateKey)。是否可以重建关键对象以在代码中使用它们? 我在Stack Overflow中发现了如何将整个对象序列化为二进制(然后序列化到磁盘),然后返回到二进制和适当类的对象,但我相信序列化包含实现细节,如果我尝试将这些键与Bouncy Cas

  • 我正在尝试使用私钥和公钥对为sftp服务器设置身份验证。 我已经在本地计算机上设置了带有Bitvise SSH服务器的sftp服务器。我用SSH服务器生成了私钥和公钥。我已经在SSH服务器的主机密钥部分上设置了私钥,并且已经创建了一个虚拟帐户并将公钥设置到该帐户。 谢谢

  • 对示例代码中应用的概念“带RSA加密的JSON Web令牌(JWT)”有疑问 参见:http://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-rsa-encryption 我的问题:为什么客户端使用私钥?为什么不在加密器上使用私钥,在解密器类上使用公钥呢? 欢迎对此RSA示例代码的概念方面进行澄清。