次の方法で共有


保護された構成プロバイダの実装

更新 : 2007 年 11 月

保護された構成を使用すると、アプリケーションが使用する機密情報を保護するために ASP.NET アプリケーションの Web.config ファイルのセクションを暗号化できます。これによって、攻撃者が Web.config ファイルへのアクセスに成功した場合にも機密情報へのアクセスが困難になるため、アプリケーションのセキュリティが強化されます。ASP.NET には、Web.config ファイルのセクションを暗号化するために使用できる次の 2 つの保護された構成プロバイダがあります。RsaProtectedConfigurationProviderRSACryptoServiceProvider を使用して構成セクションを暗号化し、DpapiProtectedConfigurationProvider は Windows データ保護 API (DPAPI) を使用して構成セクションを暗号化します。

場合によっては、RSA プロバイダまたは DPAPI プロバイダで使用できるアルゴリズム以外のアルゴリズムを使用して情報を暗号化する必要があります。その場合は、ASP.NET が使用するカスタムの保護された構成プロバイダを構築します。

保護された構成プロバイダの必須クラス

保護された構成プロバイダを実装するには、System.Configuration 名前空間から ProtectedConfigurationProvider 抽象クラスを継承するクラスを作成します。ProtectedConfigurationProvider 抽象クラスは System.Configuration.Provider 名前空間から ProviderBase 抽象クラスを継承するため、ProviderBase クラスの必須メンバも実装する必要があります。次の表に、ProviderBase 抽象クラスと ProtectedConfigurationProvider 抽象クラスから実装する必要があるプロパティとメソッドを示します。各メンバの実装については、「方法 : 保護された構成プロバイダの構築と実行の例」を参照してください。

ProviderBase の必須メンバ

メンバ

説明

Initialize メソッド

アプリケーション構成で提供する実装固有の値とオプションを含めて、プロバイダのインスタンスにプロパティの値を設定します。

プロバイダの名前および構成設定の NameValueCollection を入力として受け取ります。

ProtectedConfigurationProvider の必須メンバ

メンバ

説明

Encrypt メソッド

暗号化を実行します。暗号化する構成セクションを含む XmlNode オブジェクトを入力して受け取ります。たとえば、暗号化する構成セクションが connectionStrings セクションの場合、XmlNode オブジェクトは次の例のような XML データを表します。

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

Encrypt メソッドは、XmlNode オブジェクトの OuterXml 値を暗号化し、次の例のように、EncryptedData 要素がルート要素になっている XmlNode オブジェクトを返します。

<EncryptedData>
  <!-- encrypted contents -->
</EncryptedData>

EncryptedData 要素の内容の形式は、実装によって決まります。要素を復号化する場合、ASP.NET は EncryptedData 要素がルート要素になっている XmlNode オブジェクトを Decrypt メソッドに渡します。

Decrypt メソッド

復号化を実行します。暗号化された構成セクションの EncryptedData 要素を含む XmlNode オブジェクトを入力として受け取ります。たとえば、connectionStrings セクションが暗号化する構成セクションの場合、XmlNode オブジェクトは次の例で強調表示されているような XML データを表します。

<connectionStrings configProtectionProvider="CustomProvider">
  <EncryptedData>    <!-- encrypted contents -->  </EncryptedData>
</connectionStrings>

Decrypt メソッドは XmlNode オブジェクトの内容を復号化し、EncryptedDataXmlNode オブジェクトの復号化された内容を表す XmlNode オブジェクトを返します。たとえば、connectionStrings セクションが暗号化されている場合、Decrypt メソッドは次の例のような XML データを含む XmlNode オブジェクトを返します。

<connectionStrings>
  <add name="SampleConnectionString" 
    connectionString="Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;" />
</connectionStrings>

サンプル プロバイダ

TripleDESCryptoServiceProvider クラスを使用して Web.config ファイルのセクションを暗号化および復号化するカスタムの保護された構成プロバイダの例については、「方法 : 保護された構成プロバイダの構築と実行の例」を参照してください。

参照

処理手順

方法 : 保護された構成プロバイダの構築と実行の例

その他の技術情報

保護された構成を使用した構成情報の暗号化