Подтвердить что ты не робот

Совместное использование файла cookie между двумя веб-сайтами в одном домене

Здесь ситуация:

Я пытаюсь передать cookie (проверка подлинности форм) между веб-сайтами.

Я не использую аутентификацию на основе форм. Я использую встроенные методы (Encrypt, Decrypt и т.д.), Но я настраиваю свой собственный файл cookie.

Когда я устанавливаю файл cookie на одном из сайтов, другие видят файл cookie, но не могут его расшифровать. Ошибка - это общая ошибка "Ошибка произошла во время криптографической операции".

Что я обеспечил:

  • Файл cookie имеет домен "example.com" (что означает доступ к субдоменам. Доказательство - это то, что другой веб-сайт может "видеть" файл cookie).
  • Оба веб-узла используют один и тот же машинный ключ. Web.config для обоих имеет то же значение для decryptionKey и validationKey.
  • Версия билета проверки подлинности форм и имя файла cookie одинаковы на обоих сайтах.
  • Путь установлен на "/".

Я делал это раньше, и он отлично работает, но в этом сценарии оба приложения используют одну и ту же базу кода.

В этом случае они являются отдельными приложениями. Это связано с тем, что я создаю прототип решения, в котором два независимые от платформы приложения в одном домене верхнего уровня могут совместно использовать файл cookie для проверки подлинности.

Может ли кто-нибудь сказать мне, что мне не хватает, или предоставить альтернативное решение.

Я прочитал все связанные вопросы, но ответ обычно 2) выше.

4b9b3361

Ответ 1

При создании нового приложения ASP.NET 4.5 (например, ASP.NET MVC 4) в файл web.config добавляется следующая строка:

<httpRuntime targetFramework="4.5" />

Это не было в моем другом приложении, возможно, потому что другим моим приложением было приложение ASP.NET 3.5, которое было обновлено до 4.5.

Удаление этой строки в новом веб-приложении ASP.NET устранило проблему.

Я думаю, что это связано с значением режима совместимости: http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx

Framework45. Криптографические улучшения для ASP.NET 4.5 действуют. Это значение по умолчанию, если файл приложения Web.config имеет атрибут targetFramework для элемента httpRuntime, установленного на "4.5".

Не уверен, что я понял, как удалить эту проблему. Я предполагаю, что у приложения есть другой режим совместимости, так как у него не было этого элемента httpRuntime.

Ответ 2

Лучший способ справиться с этим - сделать дешифрование машинного ключа обратно в Framework20SP2

Из этой статьи: http://msdn.microsoft.com/en-us/library/system.web.configuration.machinekeysection.compatibilitymode.aspx

Просто добавьте этот атрибут в машинный ключ в приложение .net 4.5

<machineKey validationKey="" decryptionKey="" validation="SHA1" compatibilityMode="Framework20SP2" />

вам не нужно будет удалить targetFramework = "4.5" из httpruntime сейчас.