Share via


보호되는 구성 공급자 구현

업데이트: 2007년 11월

보호되는 구성을 사용하면 응용 프로그램에 사용되는 중요한 정보를 보호하기 위해 ASP.NET 응용 프로그램에 대한 Web.config 파일의 섹션을 암호화할 수 있습니다. 이렇게 하면 공격자가 Web.config 파일에 액세스하더라도 중요한 정보에는 액세스할 수 없도록 하여 응용 프로그램의 보안을 향상시킬 수 있습니다. ASP.NET에는 RSACryptoServiceProvider를 사용하여 구성 섹션을 암호화하는 RsaProtectedConfigurationProvider와 Windows DPAPI(데이터 보호 API)를 사용하여 구성 섹션을 암호화하는 DpapiProtectedConfigurationProvider 등 보호되는 구성 공급자가 두 개 포함되어 있습니다. 이 공급자를 사용하여 Web.config 파일의 섹션을 암호화할 수 있습니다.

경우에 따라 RSA 또는 DPAPI 공급자에서 사용할 수 있는 방법 외에 다른 알고리즘을 사용하여 정보를 암호화해야 할 수도 있습니다. 이런 경우에는 ASP.NET에서 사용할 보호되는 구성 공급자를 사용자 지정할 수 있습니다.

보호되는 구성 공급자에 대한 필수 클래스

보호되는 구성 공급자를 구현하려면 System.Configuration 네임스페이스에서 ProtectedConfigurationProvider 추상 클래스를 상속하는 클래스를 만듭니다. ProtectedConfigurationProvider 추상 클래스는 System.Configuration.Provider 네임스페이스에서 ProviderBase 추상 클래스를 상속하므로 ProviderBase 클래스의 필수 멤버도 구현해야 합니다. 다음 표에서는 ProviderBaseProtectedConfigurationProvider 추상 클래스에서 구현해야 하는 속성과 메서드를 보여 줍니다. 각 멤버에 대한 구현을 보려면 방법: 보호되는 구성 공급자 예제 빌드 및 실행을를 참조하십시오.

필수 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과 비슷한 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 파일의 섹션을 암호화하고 해독하는 보호되는 구성 공급자를 사용자 지정하는 예제를 보려면 방법: 보호되는 구성 공급자 예제 빌드 및 실행을를 참조하십시오.

참고 항목

작업

방법: 보호되는 구성 공급자 예제 빌드 및 실행

기타 리소스

보호되는 구성을 사용하여 구성 정보 암호화