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

具有多个私钥/公钥对的JWT

姚高爽
2023-03-14

我正在实施类似于:https://login.microsoftonline.com/common/discovery/v2.0/keys

Spring boot JWT应用程序,用于生成和验证JWT令牌。我将生成许多公钥/私钥(我不想用一个密钥生成所有令牌。一个密钥对将生成生命周期较短的令牌,第二个密钥对将生成更长的令牌…)我将使用公钥创建endpoint/密钥。问题是:如何在我的应用程序中连接适当的公钥和私钥来验证它?

第二个问题:如何生成如上所述的密钥(使用类似于kty的字段):“RSA”,“use”:“sig”,kid…)有什么模式可以做吗?

共有1个答案

端木宏盛
2023-03-14

如何生成如上所述的密钥(使用“kty”:“RSA”“use”:“sig”“kid”…)有什么模式可以做吗?

这是一个名为JSON Web密钥(JWK)的标准,在RFC 7517中定义,它定义了一个表示JSON中加密密钥的数据结构。

在Java中,您可以使用Nimbus JOSE JWT,它支持带有RSA密钥的JWK。

如何在我的应用程序中连接适当的公钥和私钥来验证它?

您可以在您的令牌中使用kid头声明:它是一个可选的头声明,包含一个密钥标识符,当您有多个密钥对令牌进行签名,并且您需要查找正确的密钥来验证签名时,它特别有用。

一旦签名的JWT是JWS,请考虑RFC 7515中的定义:

4.1.4.“kid”(键ID)头参数

kid(密钥ID)头参数是一个提示,指示用于保护JWS的密钥。此参数允许发起者向收件人明确发出密钥更改的信号。未指定kid值的结构。其值必须是区分大小写的字符串。此标头参数的使用是可选的。

与JWK一起使用时,kid值用于匹配JWKkid参数值。

 类似资料:
  • Auth0提供了两个JWT库,一个用于Node:Node jsonwebtoken,另一个用于Java:Java JWT。 我创建了私有/公钥对,并在Node中成功地使用了node-jsonwebToken: 但是我发现没有办法在java-jwtJava做同样的事情。 有人有一个如何在Java中为JWT使用私钥/公钥的工作示例吗?

  • 我正在尝试做一个使用组合键的场景。我想有更多的公钥,这样我就可以用其中任何一个密钥来签署一个txn。 该场景的参考如下:https://docs.corda.net/api/kotlin/corda/net.corda.core.crypto/-composite-key/index.html 根据我的理解,deployNodes任务使用单个公钥生成节点。如果我偏离了轨道,请纠正我。

  • Auth0提供了两个JWT库,一个用于Node:Node jsonwebtoken,另一个用于Java:Java JWT。事实证明,JavaJWT不支持公钥/私钥对。 然而,另一个java库jjwt库声称支持该特性。但是,该文档没有显示如何在jjwt中使用自己的公钥/私钥对。 我创建了私有/公钥对,并在Node中成功地使用了node-jsonwebToken: 但是我发现在Java中用JWT无法做

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

  • 我使用secp192r1曲线生成了ECC公钥和私钥。公共密钥数组长度为75,私有密钥数组长度125。为什么私钥比公钥长?为什么私钥的长度不是公钥的两倍?为什么由于secp192r1私钥不是192位=24字节?

  • 我想通过RSACryptServiceProvider签名和验证数据 为此,我需要公钥和私钥。 在我的项目中,我将公钥和私钥存储在XML文件中。 有一次,我生成了我的公钥和私钥 在上面,我展示了“通过公钥验证数据” 我的SignData方法类似。 在那里, 我的问题是:举个例子,我认识到;通过crt/pem/cert等导入公钥和私钥。证书文件。在那里我存储了XML文件。 我的解决方案错了吗? 第二