ASP.NET 4
Webファームのweb.configの接続文字列に RSAキー暗号化 を使用しました。ただし、暗号化するカスタムパスワードエントリがもう1つあります。残りの構成を暗号化せずにRSAキーで暗号化するにはどうすればよいですか。アドバイスしてください、ありがとう。
例:
<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>
パスワードを別のセクションに入れて、このセクションのみを暗号化できます。例えば:
<?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>
次に(この例ではDPAPIを使用しているため、プロバイダーをRSAに適応させることに注意してください):
aspnet_regiis -pef secureAppSettings . -prov DataProtectionConfigurationProvider
暗号化されると、ファイルは次のようになります。
<?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>
ファイルが暗号化された後にアプリケーションでこれらの設定にアクセスする方法は、同じであり、完全に透過的です。
var Host = ConfigurationManager.AppSettings["Host"];
var password = ConfigurationManager.AppSettings["Password"];
C#および.Net 4.5では、これを使用して暗号化された設定を読み取る必要がありました。
string password = ((System.Collections.Specialized.NameValueCollection)ConfigurationManager.GetSection("secureAppSettings"))["Password"].ToString();
それ以外はおやつになります。
単一のエントリを暗号化することはできません-インフラストラクチャでは、構成セクション全体の暗号化のみが許可されます。
1つのオプションは、独自の構成セクションにエントリを配置し、それを暗号化することです。