Json网络令牌可以用公钥签名吗?

时间:2017-05-27 07:53:32

标签: cryptography jwt

我看到JWT可以使用私钥对JSON对象进行签名,并通过公钥进行验证。

我想可以使用JWT使用JWT签署API请求有效负载。 但是,我想使用公钥来签署API请求有效负载,并使用我的私钥在服务器端验证它,而不是使用私钥。可能吗?正如我看到库实现的JWT似乎只用私钥签名并通过公钥验证。

不能用公钥签名吗?

由于

1 个答案:

答案 0 :(得分:1)

棘手的问题,但我会尽我所能。 JWT在下面和RSA中使用RSA public 私钥是"可互换的"。一般来说, public 私钥只能通过生成后如何处理它们来获得它们的含义。

您发送的那个,例如未加密的频道和其他paties已知的称为" 公钥"。 您隐藏且永不给予任何人的那个称为" 私钥"

所以应该可以使用服务器的公钥加密某些东西(比如在JWT令牌进程中完成)并将其发送到服务器。服务器需要相应的私钥来解密它。

(请注意,设计中的" 服务器公钥"对于可能的攻击者而言是已知的,并且每个攻击者通常都能够使用它来生成那些JWT代币。我不知道你在这里给出适当的建议。)

这里唯一的陷阱是JWT的实际实施(我遗憾地没有足够的知识)。 JWT可以向其中一个键添加一些额外的数据"并称之为整个对象" public "或者" 私钥",破坏"可互换性" ...唯一的方法是挖掘JWT的文档(希望找到一些东西)或者通过源代码,或者只是尝试一下:/

如果您尝试一下,那么让社区知道:)