Справочная информация:
У меня есть два веб-приложения, настроенные на разных веб-серверах, которые в настоящее время являются IIS6.Приложение 1 (A1 - a1.domain.com) использует cookie-файлы для проверки подлинности форм, установленные приложением 2 (A2 - a2.domain.com).
В файле web.config у меня есть:
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="http://a2.domain.com/login.aspx" timeout="60" />
</authentication>
В A2 web.config у меня есть:
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="login.aspx" timeout="60" />
</authentication>
Эти два приложения также совместно используют значения machineKey в web.config
Это прекрасно работает без каких-либо проблем.
Проблема:
Я обновляю A1, чтобы использовать .NET 4.0 и работать в IIS7, и теперь аутентификация с использованием общих форм не работает.Я все еще перенаправлен на правильную страницу входа на А2 и вижу, что он устанавливает cookie-файл аутентификации, но когда я возвращаюсь к А1, аутентификация завершается неудачно со следующей ошибкой (из Event Viewer):
Проверка подлинности форм не удалась для запроса.Причина: предоставленный билет недействителен.
Я пытался:
Настройка обновленной версии A1 в IIS6 (это работало - поэтому проблем совместимости междуавторизация в разных версиях .NET в IIS6)
Настройка обновленного A1 в IIS7 с использованием локальной страницы входа, то есть скопированной страницы входа из A2 в A1 и установки A1 loginUrl = "login.aspx"(также работает)
Это заставило меня предположить, что существует некоторая проблема совместимости, вызванная файлом cookie аутентификации, создаваемым на сайте IIS6, который используется для аутентификации пользователей на сайте IIS7.
Кто-нибудь знает, как это решить?