IsolateApps приводит к тому, что указанный ключ дешифрования содержит недопустимые шестнадцатеричные символы

Я работаю над сайтом MVC 4, который использует аутентификацию. Сайт требует, чтобы я указал значения машинного ключа. Я сделал это через интерфейс IIS, сняв флажок «автоматически генерировать во время выполнения», сгенерировав значения ключей и выбрав «создать уникальный ключ для каждого приложения».

Запись web.config выглядит примерно так:

<machineKey decryption="DES" decryptionKey="{hex-key value},IsolateApps" 
    validationKey="{hex-key value},IsolateApps" />;

Хотя это, кажется, отлично работает в другом веб-проекте, оно вызывает ошибку «Указанный ключ дешифрования имеет недопустимые шестнадцатеричные символы» на машине разработчика, над которой я сейчас работаю (как в IIS-Express, так и в IIS 7.5).

Удаление ",IsolateApps" из ключевых значений решает проблему, но, поскольку мне нужна эта опция в рабочей среде, я не хочу удалять ее сейчас только для того, чтобы возникла эта проблема при развертывании.

Что дает? Блок разработчика представляет собой блок SQL 2008 R2 с .net 2.0 и .net 4.0.


person WernerVA    schedule 21.02.2013    source источник


Ответы (3)


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

Если вы не заставляете ASP.NET автоматически генерировать ключи и вместо этого указываете ключи с помощью decryptionKey="{hex-key value}", то способ заставить ASP.NET использовать разные ключи для каждого приложения — просто указать другой ключ в веб-интерфейсе каждого приложения. .конфиг.

Графический интерфейс конфигурации IIS позволяет создать файл Web.config с явным ключом вместе с модификатором IsolateApps, что является недопустимым и, на мой взгляд, является ошибкой в ​​​​графическом интерфейсе конфигурации.

person Joe Daley    schedule 14.03.2013
comment
Кроме того, рассмотрите возможность использования AES вместо DES для вашего алгоритма дешифрования. - person Levi; 22.03.2013
comment
Согласен (особенно с ошибкой) - person WernerVA; 16.04.2013
comment
Мы столкнулись с этой проблемой при объединении сайта Mvc и Webforms, и это было связано с вызовом «AntiForgeryToken()», который явно использует машинный ключ. - person BlackjacketMack; 04.03.2014
comment
@joe-daly Знаете ли вы, как часто генерируется ключ проверки и дешифрования, если я выбрал «Автоматически генерировать во время выполнения»? то есть каждый 1 час, IIS перезапускается? Просто любопытно, потому что я столкнулся со странным поведением при использовании токенов доступа OAuth, когда это проверено. - person Taiseer Joudeh; 11.12.2014
comment
В WebForms это вызвано MS AJAX — когда он пытается сгенерировать URL-адрес WebResource: protected void Page_Load (отправитель объекта, EventArgs e) { string nonExistentUrl = Page.ClientScript.GetWebResourceUrl (typeof (UpdatePanel), someFile.js); Response.Write(nonExistentUrl); } - person rdmptn; 06.07.2017

Вы можете решить эту проблему, добавив следующее в элемент machineKey (compatibilityMode="Framework20SP1") в web.config см. ссылку

person JDeVil    schedule 28.03.2013

Это можно исправить, добавив строку machineKey в ваш web.config и указав свои ключи, как показано ниже (используйте свой собственный ключ, хотя, конечно, этот ключ легко угадать):

<configuration>
 <system.web>
  <machineKey decryptionKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0" validationKey="0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCDEF0123456789ABCDEF00123456789ABCDEF0123456789ABCD" />
 </system.web>
</configuration>
person Jrud    schedule 01.11.2016