Аутентификация Asp.Net Forms SSO между приложениями 4.0 и 2.0
Sigle-Sign-On между приложением платформы 4.0 и приложением платформы 2.0, похоже, не работает.
У меня есть старое приложение, построенное на платформе asp.net 2.0, и новое приложение, построенное на платформе asp.net 4.0, и я пытаюсь настроить SSO между ними.
Я выполнил всю правильную настройку настройки одного и того же ключа компьютера с идентичными атрибутами validationKey, decryptionKey, validation и decryption, а также с идентичными именем аутентификации, доменом, защитой и атрибутами пути.
Как ни странно, эта конфигурация отлично работает на моем локальном компьютере разработки: - Windows 7 Ultimate (с пакетом обновления 1) - приложение 2.0, работающее в пуле приложений, установленном на v2.0 Integrated - приложение 4.0, работающее в пуле приложений, настроенном на v4.0 Integrated
Тем не менее в журнале событий Windows сервера развертывания появляется сообщение "Проверка подлинности с помощью форм для запроса. Причина: предоставленный билет был недействительным.": - Windows Server 2008 R2 Standard (пакет обновления 1) - приложение 2.0, работающее в пуле приложений, для которого установлено значение Интегрированная версия 2.0 - приложение 4.0, работающее в пуле приложений с интегрированной версией 4.0
Я проверил, перепроверил и еще раз проверил ключ компьютера и конфигурацию аутентификации на компьютере развертывания, поэтому я точно знаю, что это не проблема.
Кроме того, просто ради аргумента, на сервере развертывания я даже попытался установить обе формы защиты заявлений ="Нет", просто чтобы посмотреть, была ли проблема с шифрованием и результат все тот же.
Кроме того, на сервере развертывания все другие приложения версии 2.0, настроенные с такими же параметрами единого входа, не имеют проблем. Даже те, которые работают в разных пулах приложений. Короче говоря, v2.0 до v2.0 работает, в то время как v4.0 до v2.0 блюет.
Какие-либо предложения?
3 ответа
После нескольких дней отчаяния это сработало: в теге конфигурации web.config 4.0
<appSettings>
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
</appSettings>
Пожалуйста, ознакомьтесь с ответом на этот вопрос, чтобы узнать, как управлять шифрованием между устаревшими веб-приложениями.
Если добавление этих ключей appSetting не работает, попробуйте настроить режим совместимости элемента MachineKey, особенно если одно из ваших приложений предназначено для.NET 4.5: