如何使用 mscapi.RSAPrivateKey 进行 JWT 签名?
How do I use mscapi.RSAPrivateKey for JWT signing?
我不知道怎么问这个问题,但我正在尝试使用来自网络的各种 Json Web 令牌实现(无论是 java-jwt 还是 jjwt 等),它们都是在他们的签名过程中接受 RSAPrivateKey
。
但是我遇到的问题是,显然 mscapi.RSAPrivateKey
没有提供与 java.security.interfaces.RSAPrivateKey
相同的 API 并且当我尝试编写包装器时 class 对于它,我不知道如何编写 getEncoded
或 getFormat
(我猜我应该 return "RS256" 或类似的东西)函数。
- 如何包装
mscapi.RSAPrivateKey
?
- 将
mscapi.RSAPrivateKey
转换为 java.security.interfaces.RSAPrivateKey
的正确方法是什么?
不需要获取内容或包装私钥来签署 JWT。加密提供者,在您的例子中是 mscapi,有意隐藏内容以防止其被提取,或者因为它在物理上不可用,例如,使用智能卡。但是 mscapi 允许使用该密钥进行签名或加密,因此您的库没有理由不能使用 PrivateKey
(不是 RSAPrivate 密钥)
的实例对 jwt 进行签名
您描述的问题与this类似。似乎 jjwt 试图转换 PrivateKey 而 mscapi 包装器没有实现通常的接口。
如果需要 getEncoded,我认为您不能在 mscapi 密钥上创建包装器,因为正如我所说,您无权访问密钥 material。所以我建议使用 jjwt 构建令牌 (header.payload) 并使用标准签名 api
自己签名
我不知道怎么问这个问题,但我正在尝试使用来自网络的各种 Json Web 令牌实现(无论是 java-jwt 还是 jjwt 等),它们都是在他们的签名过程中接受 RSAPrivateKey
。
但是我遇到的问题是,显然 mscapi.RSAPrivateKey
没有提供与 java.security.interfaces.RSAPrivateKey
相同的 API 并且当我尝试编写包装器时 class 对于它,我不知道如何编写 getEncoded
或 getFormat
(我猜我应该 return "RS256" 或类似的东西)函数。
- 如何包装
mscapi.RSAPrivateKey
? - 将
mscapi.RSAPrivateKey
转换为java.security.interfaces.RSAPrivateKey
的正确方法是什么?
不需要获取内容或包装私钥来签署 JWT。加密提供者,在您的例子中是 mscapi,有意隐藏内容以防止其被提取,或者因为它在物理上不可用,例如,使用智能卡。但是 mscapi 允许使用该密钥进行签名或加密,因此您的库没有理由不能使用 PrivateKey
(不是 RSAPrivate 密钥)
您描述的问题与this类似。似乎 jjwt 试图转换 PrivateKey 而 mscapi 包装器没有实现通常的接口。
如果需要 getEncoded,我认为您不能在 mscapi 密钥上创建包装器,因为正如我所说,您无权访问密钥 material。所以我建议使用 jjwt 构建令牌 (header.payload) 并使用标准签名 api
自己签名