我不确定如何问这个,但我试图从网上使用各种Json Web Token实现(无论是java-jwt还是jjwt等),它们都需要{{1作为签署过程的一部分。
然而我遇到的问题是,显然RSAPrivateKey
没有提供与mscapi.RSAPrivateKey
相同的API,当我尝试为其编写包装类时,我不知道关于如何写java.security.interfaces.RSAPrivateKey
或getEncoded
(我猜测我应该返回" RS256"或类似的东西)功能。
getFormat
?mscapi.RSAPrivateKey
转换为mscapi.RSAPrivateKey
?答案 0 :(得分:2)
不需要获取内容或包装私钥来签署JWT。在您的情况下,加密提供程序mscapi会故意隐藏内容以防止其被提取,或者因为它在物理上不可用,例如,使用智能卡。但是mscapi允许使用该密钥进行签名或加密,因此没有理由说您的库无法使用PrivateKey
实例(而不是RSAPrivate密钥)对jwt进行签名
您描述的问题类似于this。似乎jjwt尝试强制转换PrivateKey,而mscapi包装器没有实现通常的接口。
如果需要getEncoded,我认为你不能在mscapi密钥上创建一个包装器,因为正如我所说,你无法访问密钥资料。所以我建议使用jjwt构建令牌(header.payload)并使用标准签名api自己签名