Le système CryptographicException RSACryptoServiceProvider ne peut pas trouver le fichier spécifié sous ASP.NET

J'ai une application qui utilise le RSACryptoServiceProvider pour décrypter certaines données en utilisant une clé privée stockée dans une variable).

Lorsque le Pool d'Applications IIS est configuré pour utiliser le Service Réseau, tout fonctionne très bien.

Cependant, lorsque nous avons configurer le Pool d'Applications IIS pour exécuter le code sous une Identité différente, nous obtenons les suivantes:

Système.De sécurité.La cryptographie.CryptographicException: Le système ne peut pas trouver le fichier spécifié. 

au Système.De sécurité.La cryptographie.Utils.CreateProvHandle(CspParameters paramètres, Boolean randomKeyContainer) 
au Système.De sécurité.La cryptographie.RSACryptoServiceProvider.ImportParameters(RSAParameters paramètres) 
au Système.De sécurité.La cryptographie.RSA.FromXmlString(String xmlString) 

Le code est quelque chose comme ceci:

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

Il y a des ressources qui tentent d'y répondre en indiquant que vous devez donner à l'utilisateur un accès en lecture à la machine du magasin de clés - cependant il n'y a pas de réponse définitive à résoudre ce problème.

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

source d'informationauteur