Единая регистрация - MVC3 и веб-формы - PullRequest
2 голосов
/ 04 августа 2011

У меня есть 2 приложения: приложение webforms, работающее .Net 3.5 на IIS6 на subdomain.domain.com, и приложение MVC3, работающее .Net 4 на IIS7 на subdomain2.domain.com.

Это очень помогло, но оно все еще не работает.

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

1 Ответ

1 голос
/ 04 августа 2011

Помимо необходимости использования идентичных ключей и имени авторизации, существует другая проблема, когда на серверах работают разные версии .net. В .net 4.0 алгоритм шифрования по умолчанию был изменен. В разделе «machinekey» файла web.config вы можете явно установить это следующим образом:

<machineKey 
    validationKey="{your key here}"   
    decryptionKey="{your key here}" 
    validation="SHA1" />

Это описано здесь:

Срочные изменения

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

Ваши приложения могут быть затронуты, если вы используете смешанный ASP.NET 2.0 / ASP.NET 4 среды, где такие данные, как проверка подлинности форм файлы cookie должны работать во всех версиях .NET Framework.

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

<forms domain="mydomain.com" name=..etc.

Подробнее об этом см. Здесь: http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

...