のアルゴリズム・グループを持っている必要があり、私は次のような問題があり、解決策を見つけるカント:APN(アップルのプッシュ通知)を消費しながら鍵ECDSA
をAPIは、私は、トークン化された認証を実装しました。 Appleのプッシュ通知apiに対する承認の新しい方法です。
Appleは秘密鍵を提供しています。これは私がC#KeyNGオブジェクトを作成するために使用します。私は秘密鍵を使ってデータに署名します。
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を消費してプッシュ通知を送信する際に承認ヘッダとして使用します。
それは私のdevのマシン上でうまく動作しますが、私は、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)
私は解決策を見つける傾ける、それが窓の鍵格納か何かで何かありますそのように....
どうすればよいですか?
お返事ありがとうございました!すぐにそれを期待していなかった:)とにかく、私はdevのマシン上でバージョン4.6.2を持っており、サーバーは4.6.1を持っています。サーバーを4.6.2ネットバージョンにアップグレードし、問題が解決するかどうかを確認します。情報のように、私のマシン(Win7)で回避策が動作しない場合、「要求された操作はサポートされていません」と表示されます。例外。 – MIslavMIslav
これは、Windowsサーバー2012r2 .NETバージョンを4.6.2にアップグレードしたときに機能しました!問題が解決しました、ありがとうございます! – MIslavMIslav