RSACryptoServiceProvider System CryptographicException nie może znaleźć pliku określonego w ASP.NET

Mam aplikację, która korzysta z RSACryptoServiceProvider, aby odszyfrować niektóre dane przy użyciu znanego klucza prywatnego (przechowywanego w zmiennej).

Gdy pula aplikacji IIS jest skonfigurowana do korzystania z usługi sieciowej, wszystko działa prawidłowo.

Jeśli jednak skonfigurujemy pulę aplikacji IIS do uruchomienia kodu pod inną tożsamością, otrzymamy:

System.Security.Cryptography.CryptographicException: The system cannot find the file specified.

   at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)
   at System.Security.Cryptography.RSA.FromXmlString(String xmlString)

Kod wygląda mniej więcej tak:

byte[] input; 
byte[] output; 
string private_key_xml; 

var provider = new System.Cryptography.RSACryptoServiceProvider(this.m_key.Key_Size);
provider.FromXmlString(private_key_xml); // Fails Here when Application Pool Identity != Network Service

ouput = provider.Decrypt(input, false); // False = Use PKCS#1 v1.5 Padding

Istnieją zasoby, które próbują na nie odpowiedzieć, stwierdzając, że należy dać użytkownikowi dostęp do magazynu kluczy maszyn - jednak nie ma ostatecznej odpowiedzi, aby rozwiązać ten problem.

Środowisko: IIS 6.0, Windows Server 2003 R2, .NET 3.5 SP1

questionAnswers(4)

yourAnswerToTheQuestion