ASP.NET 4
J'ai utilisé chiffrement par clé RSA pour les chaînes de connexion dans web.config sur ma batterie de serveurs Web. Cependant, il y a une autre entrée de mot de passe personnalisée que je voudrais crypter. Comment dois-je le chiffrer avec la clé RSA sans que les autres configurations soient chiffrées. S'il vous plaît conseiller, merci.
Exemple:
<appSettings>
...
<add key="Host" value="www.foo.com" />
<add key="Token" value="qwerqwre" />
<add key="AccountId" value="123" />
<add key="DepartmentId" value="456" />
<add key="Password" value="asdfasdf" />
<add key="SessionEmail" value="[email protected]" />
<add key="DefaultFolder" value="789" />
</appSettings>
Vous pouvez mettre le mot de passe dans une section distincte et crypter cette section uniquement. Par exemple:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<appSettings>
<add key="Host" value="www.foo.com" />
<add key="Token" value="qwerqwre" />
<add key="AccountId" value="123" />
<add key="DepartmentId" value="456" />
<add key="SessionEmail" value="[email protected]" />
<add key="DefaultFolder" value="789" />
</appSettings>
<secureAppSettings>
<add key="Password" value="asdfasdf" />
</secureAppSettings>
</configuration>
puis (notez que j'utilise DPAPI dans mon exemple donc adaptez le fournisseur pour RSA):
aspnet_regiis -pef secureAppSettings . -prov DataProtectionConfigurationProvider
Une fois crypté, le fichier ressemblera à ceci:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="secureAppSettings" type="System.Configuration.NameValueSectionHandler, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<appSettings>
<add key="Host" value="www.foo.com" />
<add key="Token" value="qwerqwre" />
<add key="AccountId" value="123" />
<add key="DepartmentId" value="456" />
<add key="SessionEmail" value="[email protected]" />
<add key="DefaultFolder" value="789" />
</appSettings>
<secureAppSettings configProtectionProvider="DataProtectionConfigurationProvider">
<EncryptedData>
<CipherData>
<CipherValue>AQAAANCMnd.......</CipherValue>
</CipherData>
</EncryptedData>
</secureAppSettings>
</configuration>
La façon dont vous accéderiez à ces paramètres dans votre application une fois le fichier chiffré est toujours la même et complètement transparente:
var Host = ConfigurationManager.AppSettings["Host"];
var password = ConfigurationManager.AppSettings["Password"];
En c # et .Net 4.5, j'ai dû utiliser ceci pour lire le paramètre crypté:
string password = ((System.Collections.Specialized.NameValueCollection)ConfigurationManager.GetSection("secureAppSettings"))["Password"].ToString();
mais fonctionne autrement un régal.
Vous ne pouvez pas crypter une seule entrée - l'infrastructure ne permet que le cryptage de sections de configuration entières.
Une option consiste à placer l'entrée dans sa propre section de configuration et à la crypter.