<machineKey>

В этом разделе вы можете задать ключ, специфический для сервера, который используется для шифрования данных и создания цифровых подписей. Вы можете использовать шифрование вместе с некоторыми функциональными возможностями ASP.NET. ASP.NET использует его автоматически для защиты cookie-файлов аутентификации форм, а вы можете применять его к защищенным данным состояния просмотра (о чем будет сказано в главе 6). Ключ также используется для аутентификации с помощью внепроцессных провайдеров состояния сеанса.

Как правило, элемент <machineKey> принимает следующую форму:

<machineKey validationKey="AutoGenerate,IsolateApps"
  decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" />

Значение AutoGenerate, IsolateApps показывает, что ASP.NET будет создавать и сохранять ключи, специфические для машины и специфические для приложения. Другими словами, каждое приложение использует отличающийся, автоматически генерируемый ключ. Это помогает защититься от потенциальных атак, направленных на множество сайтов.

Если вам не нужны ключи, специфические для приложения, вы можете выбрать использование одного ключа для всех приложений на текущем компьютере, как показано далее:

<machineKey validationKey="AutoGenerate"
  decryptionKey="AutoGenerate" validation="SHA1" />

Если вы используете Web-фабрику и запускаете одно и то же приложение на множестве компьютеров, оба эти подхода приведут к возникновению проблемы. Если вы запросите страницу, и она будет обрабатываться одним сервером, после чего вы отсылаете страницу, которая будет обрабатываться уже другим сервером, то второй сервер не сможет расшифровать состояние просмотра и cookie-файлы форм от первого сервера. Эта проблема возникает вследствие того, что два Web-сервера используют различные ключи.

Чтобы решить эту проблему, вам нужно определить ключ явным образом в файле machine.config. Ниже показан пример элемента <machineKey> с двумя определенными атрибутами ключа:

<machineKey validationKey=
  61EA54E005915332011232149A2EEB317586824B265326CCDB3AD9ABDBE9D
  6F24B0625547769E835539AD3882D3DA88896EA531CC7AFE664866BD5242FC2B05D"
  decryptionKey="61EA54E005915332011232149A2EEB317586824B265337AF"
  validation="SHA1" />

Совет. Вы можете также жестко закодировать ключи, специфические для приложения, добавив элемент <machineKey> в файл web.config, помещаемый в виртуальный каталог приложения. Этот подход понадобится, если вы окажетесь в ситуации, комбинирующей оба описанных ранее сценария. (К примеру, так поступить нужно будет, если вы запускаете приложение на множестве серверов, и эти серверы содержат множество приложений, которым необходимы отдельные ключи.)

предыдущая    следующая страница   оглавление

214

Hosted by uCoz