Проверка подлинности на основе форм не работает между .Net 2.0 и .Net 4.0 приложением - PullRequest
6 голосов
/ 15 февраля 2012

У меня есть несколько веб-приложений, работающих на Windows Server 2003 с IIS 6.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, больше не работают.

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

Ответы [ 2 ]

5 голосов
/ 30 апреля 2012

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

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

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

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

2 голосов
/ 15 февраля 2012

Это одно из критических изменений в ASP.NET 4.0:

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

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

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

<machineKey validation="SHA1" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...