我看到 JWT 可以使用私钥对 JSON 对象进行签名,并通过公钥进行验证。
我认为是否可以使用 JWT 来使用 JWT 签署 API 请求负载。但是,我不想使用私钥,而是想使用公钥对 API 请求负载进行签名,并使用私钥在服务器端对其进行验证。可能吗?正如我所看到的,实现 JWT 的库似乎只使用私钥签名并通过公钥验证。
用公钥签名不是不可能吗?
谢谢
棘手的问题,但我会尽力而为。JWT 在底层使用 RSA,并且 RSA 中的公钥和私钥是“可互换的”。一般来说,公钥和私钥只能通过生成后如何处理它们来获取其含义。
您通过例如未加密的通道发送且为其他方所知的密钥称为“公钥”。你隐藏起来并且不给任何人的一把叫做“私钥”
因此应该可以使用服务器的公钥来加密某些内容(就像在 JWT 令牌过程中完成的那样)并将其发送到服务器。服务器需要相应的私钥来解密它。
(请注意,“服务器公钥”的设计对于可能的攻击者来说是已知的,并且每个攻击者通常都能够使用它来生成这些 JWT 令牌。我不知道您的用例,无法为您提供适当的建议.)
这里唯一的陷阱是 JWT 的实际实现(遗憾的是我对此没有足够的了解)。JWT 可以向其中一个“密钥”添加一些附加数据,并将整个对象称为“公钥”或“私钥”,从而破坏“可互换性”……唯一的方法是深入研究 JWT 的文档(希望能够找到一些东西)或通过源代码,或者只是尝试一下:/
如果您尝试一下,请让社区知道:)
| 归档时间: |
|
| 查看次数: |
7329 次 |
| 最近记录: |