Puede poner la contraseña en una sección separada y encriptar solo esta sección. Por ejemplo:
<?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>
y luego (en cuenta que yo estoy usando DPAPI en mi ejemplo para adaptar al proveedor por RSA):
aspnet_regiis -pef secureAppSettings . -prov DataProtectionConfigurationProvider
Una vez que cifró el archivo se vería así:
<?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 forma en que accederá a esa configuración en su aplicación una vez que el archivo está encriptado sigue siendo la misma y completamente transparente:
var host = ConfigurationManager.AppSettings["Host"];
var password = ConfigurationManager.AppSettings["Password"];
¿Cómo es que no es ConfigurationManager.secureAppSettings ["Password"]? ¿Qué hace que .NET pueda tratar esa sección de secureAppSettings como parte de appSettings? – Stan
@Stan, usa un 'NameValueSectionHandler'. –
No puedo recuperar el valor de "Contraseña" en la sección "secureAppSettings" usando "ConfigurationManager.AppSettings [" Password "];" en el sitio web .net 3.5 asp.net. – nRk