не работает единый вход asp.net - PullRequest
6 голосов
/ 16 июня 2011

После выпуска кода перестал работать единый вход между двумя нашими сайтами. Оба сайта работают на разных поддоменах одного домена. Субдомен x использовался в качестве сервера входа для всех других приложений. Я не могу понять, почему это так. В web.config для обоих сайтов ключи машины и расшифровки одинаковы. Для валидации установлено значение SHA1, а для дешифрования - AES. Конфигурация аутентификации гласит:

X:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" protection="All" name="Domain.ASPXAUTH" path="/" domain="domain.com" />
</authentication>

Y

<authentication mode="Forms">
    <forms loginUrl="https://x.domain.com/Account/LogOn" timeout="2880" protection="All" name="Domain.ASPXAUTH" path="/" domain="domain.com" defaultUrl="http://x.domain.com/" />
</authentication>

До сегодняшнего утра SSO работал нормально. Я не уверен, что именно изменилось с выпуском кода, и у меня возникают проблемы с его выяснением. Эти два приложения в настоящее время работают в разных пулах приложений (одно из них - x .net 4.0, а y - .net 2.0), и когда я переключил их на использование одного пула приложений, сработал SSO. Однако это не вариант, поскольку одна из библиотек, используемых на другом сайте, работает только на .NET 2.0. Я также попытался принудительно использовать ключи машин и расшифровки, а также алгоритмы проверки и дешифрования в диспетчере IIS7 как на верхнем, так и на веб-сайтах, но безуспешно.

При попытке перейти на y.domain.com после перехода на x.domain.com браузер перенаправляется обратно на страницу входа, а в журнале событий появляется следующее исключение:

Проверка подлинности с помощью форм для запрос. Причина: билет прилагается был недействительным.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 29 ноября 2012

Эта проблема была решена путем получения исправлений / исправлений для Windows и / или .NET. В частности:

  • KB2518870
  • KB2656351
  • KB2572078
  • KB2633870
1 голос
/ 16 июня 2011

Вы подозреваете, что конфигурация также изменилась? Потому что это действительно нужно в разделе «Формы»:

enableCrossAppRedirects="true"

РЕДАКТИРОВАТЬ: также убедитесь, что они используют одинаковые ключи шифрования:

<system.web>
   <machineKey validationKey="BLAHBLAHBLAHBLAH" decryptionKey="BLAHBLAHBLAH" validation="SHA1" decryption="AES"/>
</system.web>

Звучит так, как будто перенаправление работает нормально и выдает ошибку при попытке прочитать тикет.

0 голосов
/ 05 сентября 2012

Я получил эту работу, добавив следующее на веб-сайт 4.0, в web.config внутри тега конфигурации:

  <appSettings>
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
    <add key="aspnet:UseLegacyEncryption" value="true" />
    <add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
  </appSettings>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...