Реализация поставщика защищенной конфигурации

Обновлен: Ноябрь 2007

Защищенная конфигурация позволяет разработчикам шифровать разделы файла Web.config приложения ASP.NET для защиты конфиденциальной информации, используемой в приложении. Это может повысить безопасность приложения, делая сложным несанкционированный доступ к конфиденциальной информации, даже если атакующий получает доступ к файлу Web.config. В ASP.NET имеется два поставщика защищенной конфигурации, с помощью которых можно шифровать разделы файла Web.config: RsaProtectedConfigurationProvider, который шифрует разделы конфигурации с помощью RSACryptoServiceProvider, и DpapiProtectedConfigurationProvider, который шифрует разделы конфигурации с помощью API защиты данных Windows (DPAPI).

В некоторых случаях может понадобиться алгоритм шифрования, отличный от алгоритмов, предоставляемых поставщиками RSA или DPAPI. В этом случае можно построить собственного поставщика защищенной конфигурации для использования в ASP.NET.

Классы, необходимые для поставщиков защищенной конфигурации

Для реализации поставщика защищенной конфигурации разработчики создают класс, который наследует абстрактному классу ProtectedConfigurationProvider из пространства имен System.Configuration. Абстрактный класс ProtectedConfigurationProvider наследует абстрактный класс ProviderBase из пространства имен System.Configuration.Provider, поэтому разработчики также должны реализовать требуемые элементы класса 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 выполняет шифрование значения OuterXml объекта XmlNode и возвращает объект XmlNode, в котором элемент EncryptedData является корневым, как показано в следующем примере:

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

Формат содержимого элемента EncryptedData определяется текущей реализацией. Когда элемент расшифровывается, ASP.NET передает объект XmlNode в метод Decrypt, в котором элемент EncryptedData является корневым.

Метод Decrypt

Выполняет расшифровку. Принимает в качестве входных данных объект XmlNode, содержащий элемент EncryptedData зашифрованного раздела конфигурации. Например, если раздел connectionStrings конфигурации был зашифрован, то объект XmlNode представляет XML-данные, подобные на выделенным XML-данным в следующем примере.

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

Метод Decrypt расшифровывает содержимое объекта XmlNode и возвращает объект XmlNode, представляющий расшифрованное содержимое объекта EncryptedDataXmlNode. Например, если раздел connectionStrings был зашифрован, то метод Decrypt возвращает объект XmlNode с XML-данными, подобными данным в следующем примере.

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

Пример поставщика

Пример пользовательского поставщика защищенной конфигурации, выполняющего шифрование и расшифровку разделов файла Web.config с помощью класса TripleDESCryptoServiceProvider, см. в разделе Практическое руководство. Построение и выполнение примера поставщика защищенной конфигурации.

См. также

Задачи

Практическое руководство. Построение и выполнение примера поставщика защищенной конфигурации

Другие ресурсы

Шифрование сведений о конфигурации с помощью функции защищенной конфигурации