2012-02-15 4 views
6

У меня есть несколько веб-приложений, работающих на Windows Server 2003 с IIS 6.0.Проверка подлинности на основе форм не работает между приложениями .Net 2.0 и .Net 4.0

Приложения работают под Asp.net 2.0.

Недавно я установил веб-приложение MVC 3, которое находится на его основе asp.net 4. Билет форм не реконструируется в этом новом приложении.

У меня есть те же самые MachineKey настройки в machine.config файлов различных версий asp.net, которые были созданы с помощью этой ссылке: http://aspnetresources.com/tools/machineKey

Конфигурация в Логин веб-приложения, как это:

<authentication mode="Forms"> 
    <forms name=".WEBAUTH" 
     loginUrl="login.aspx" 
     protection="None" 
     slidingExpiration="true" 
     enableCrossAppRedirects="false"  
     timeout="43200"  
     path="/" /> 
    </authentication> 

И соответственно конфигурация Mvc приложения является:

<authentication mode="Forms"> 
    <forms name=".WEBAUTH" 
     loginUrl="http://path2theloginapp/login.aspx" 
     protection="None" 
     slidingExpiration="true" 
     enableCrossAppRedirects="false"  
     timeout="43200"  
     path="/" /> 
    </authentication> 

    <authorization> 
    <deny users="?" /> 
    <allow users="*" /> 
    </authorization> 

Логина работы, но MVC приложения всегда г перенаправляет обратно на страницу входа в систему.

Теперь, если я изменяю версию веб-приложения asp.net в конфигурации IIS для asp.net 4.0, это работает. Но тогда все остальные приложения, работающие на asp.net 2, больше не работают.

Неужели кто-нибудь решил использовать опору на основе форм в подобной ситуации?

ответ

5

мне пришлось пройти долгий путь и открыл поддержки с Microsoft.

Как выяснилось, соответствующие обновления безопасности от Microsoft Security Bulletin MS11-100 отсутствовали:

http://technet.microsoft.com/en-us/security/bulletin/ms11-100.
Выберите свою операционную систему и установите обновления для .Net 2.0 и 4.0.

Это обновляет проверку подлинности на основе форм без реконфигурации вовлеченных веб-приложений.

+0

Спасибо вам большое! –

2

Это один из breaking changes в ASP.NET 4.0:

По умолчанию хэширования алгоритм Теперь HMACSHA256

ASP.NET использует как шифрование и алгоритмы хэширования для обеспечения безопасности данных , таких как печенье аутентификации формы и посмотреть состояние. По умолчанию ASP.NET 4 теперь использует алгоритм HMACSHA256 для операций хеша на куках и состоянии просмотра. В более ранних версиях ASP.NET использовался более старый алгоритм HMACSHA1 старше .

Возможно, ваши приложения могут быть затронуты, если вы запускаете смешанные среды ASP.NET 2.0/ASP.NET 4, где данные, такие как куки аутентификации форм, должны работать в версиях .NET Framework. Чтобы настроить ASP.NET 4 веб-приложение, чтобы использовать более старый алгоритм HMACSHA1, добавьте следующие настройки в файле Web.config:

<machineKey validation="SHA1" />

+0

Проверка выполняется так, как вы рекомендовали в файле machine.config.Может ли это работать, если я разрешаю пулу веб-приложений и приложений работать в режиме asp.net 2.0? – ms007

+0

@ MS007, нет, вы не можете запускать приложение ASP.NET MVC 3 под CLR 2.0. Он требует .NET 4.0. С другой стороны, вы могли бы запустить свое устаревшее приложение под .NET 4.0. –

 Смежные вопросы

  • Нет связанных вопросов^_^