我不知道如何问这个问题,但我尝试使用来自Web的各种Json令牌实现(无论是jjwt还是jjwt等),它们都在使用RSAPrivateKey作为签名过程的一部分。
然而,我遇到的问题是,显然mscapi.RSAPrivateKey没有提供与java.security.interfaces.RSAPrivateKey相同的API,而且当我试图为它编写包装类时,我不知道如何编写getEncoded或getFormat (我猜我应该返回"RS256“或类似的)函数。
mscapi.RSAPrivateKeymscapi.RSAPrivateKey转换为java.security.interfaces.RSAPrivateKey的正确方法是什么?发布于 2017-11-21 17:20:13
不需要获取内容,也不需要包装私钥来签署JWT。在您的示例中,加密提供程序故意隐藏内容以保护其不被提取,或者因为它在物理上不可用,例如,使用智能卡。但是mscapi允许使用该密钥进行签名或加密,因此您的库没有理由不能使用PrivateKey实例(而不是RSAPrivate密钥)对jwt进行签名。
您描述的问题类似于这。似乎jjwt试图转换PrivateKey,而mscapi包装器没有实现通常的接口。
如果需要getEncoded,我不认为您可以在mscapi上创建一个包装器,因为正如我所说的,您无法访问键控材料。因此,我建议使用jjwt构建令牌(header.payload),并使用标准的签名api对其进行签名。
https://stackoverflow.com/questions/47399562
复制相似问题