我有以下问题,找不到解决方案:
在使用 APN(Apple 推送通知)API 时,我实现了令牌化授权。这是苹果在推送通知 API 上的新授权方式。
Apple 为我提供了私钥,我用它来创建 c# CngKey 对象,然后我用它来签署数据。
CngKey key = CngKey.Import(
Convert.FromBase64String(privateKey),
CngKeyBlobFormat.Pkcs8PrivateBlob);
using (ECDsaCng dsa = new ECDsaCng(key))
{
dsa.HashAlgorithm = CngAlgorithm.Sha256;
var unsignedJwtData =
Url.Base64urlEncode(Encoding.UTF8.GetBytes(header)) + "." + Url.Base64urlEncode(Encoding.UTF8.GetBytes(payload));
var signature =
dsa.SignData(Encoding.UTF8.GetBytes(unsignedJwtData));
return unsignedJwtData + "." + Url.Base64urlEncode(signature);
}
结果是签名令牌,然后我在使用 API 和发送推送通知时将其用作授权标头。
它在我的开发机器上运行良好,但是当我将它部署到 Windows Server 时,当此代码运行时,我得到下一个:
System.ArgumentException: Keys used with the ECDsaCng algorithm must have an algorithm group of ECDsa.
Parameter name: key
at System.Security.Cryptography.ECDsaCng..ctor(CngKey key)
at OTTCommon.Encryption.ECDSA.SignES256(String privateKey, String header, String payload, ILog log)
我找不到解决方案,它是 Windows 密钥存储或类似的东西....
我应该怎么办?