Проверка подлинности Asp.Net в состоянии сеанса?
Я пытаюсь сделать SSO между приложениями, которые я поддерживаю. Два из них работают под.NET 4.0, а другой - под 2.0. Основной сайт - это 4.0, а остальные 4.0 и 2.0 - это дети, работающие под основным. Оба файла web.configs для сайтов 4.0 и 2.0 имеют параметры аутентификации, которые выглядят следующим образом:
<machineKey decryption="AES" validation="SHA1" decryptionKey="<decryptkey>" validationKey="<validationkey>"/>
<authentication mode="Forms">
<forms name=".MyAuthenticationTicket" domain=".MyDomain-Org" loginUrl="/Login.aspx" path="/" enableCrossAppRedirects="true" protection="All" timeout="43200" cookieless="UseCookies" />
</authentication>
Для ясности: сейчас на сайте работает мой локальный ящик, поэтому указанный выше домен правильный, он указывает на -Org, а не на.Org.
Проблема в том, что я могу войти на любой сайт, но.MyAuthenticationTicket создается только при входе на сайт 4.0, а не на сайт 2.0. Когда я вхожу в этот, билет не создается. Однако я обнаружил, что когда я вхожу в него, создается файл cookie ASP.NET_SessionId, и когда я его удаляю, я выхожу из сайта 2.0. Несмотря на это, я до сих пор не смог добиться единого входа для своих сайтов.
Итак... что я здесь делаю не так? У кого-нибудь есть идеи? Здесь есть настройки, которые мне не хватает?
1 ответ
Если вы хотите, чтобы ваш билет был совместимым между версиями, вам нужно установить версию совместимости билета проверки подлинности форм в ваших приложениях 4.0.
<forms ... ticketCompatibilityMode="Framework20" .../>