Настройка постоянной проверки подлинности с помощью форм на нескольких серверах и поддоменах

Я пытаюсь настроить аутентификацию с помощью форм на нескольких серверах и поддоменах. У меня установлены статические машинные ключи вверх для каждого приложения следующим образом:

<system.web>
    <machineKey validationKey="574...7A7" 
                decryptionKey="2C3...A0D" 
                validation="HMACSHA256" 
                decryption="AES" />
</system.web>

... и моя проверка подлинности с помощью форм настроена одинаково для каждого приложения:

<forms loginUrl="/login" timeout="2880" defaultUrl="/" path="/" name=".SHAREDAUTH" domain="domain.com" protection="All" />

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

Это отлично работает на моем локальном компьютере с отдельными сайтами, настроенными в IIS для каждого поддомена. Это также отлично работает на нашем сервере разработки, где все сайты по-прежнему находятся на одной машине. Когда я развертываю на однако в нашей промежуточной среде междоменная аутентификация перестает работать. В этой среде у меня есть первичный сайт (на котором происходит вход в систему), работающий на одном сервере, и вторичный сайт (на котором должна сохраняться моя аутентификация), работающий на двух нагрузках: сбалансированные серверы. Все они работают под управлением IIS 7 либо на Windows 7 (локальном), либо на сервере 2. 008 R2 (разработка и постановка).

Я проверил, что машинные ключи совпадают, закодировав строку на первичном сайте с помощью MachineKey.Encode и декодировав результат на вторичном сервере с помощью MachineKey.Decode. Я также подтвердил, что расширение.Файл cookie SHAREDAUTH передается второму приложению в запросе, как путем проверки заголовков запроса, сообщаемых Firefox и Chrome, так и путем подключения отладчика к Application_BeginRequest и Application_AuthenticateRequest. Я вижу файл cookie во время выполнения Application_BeginRequest , но он пропадает при вызове Application_AuthenticateRequest . Из того, что я могу собрать, это, похоже, означает, что десериализация билета аутентификации не удалась, но я не могу понять, почему это могло происходить в многосерверной среде, но не в среде с одним сервером, кроме разных машинных ключей. , что, как я уже подтвердил, не соответствует действительности.

У меня также есть собственные настройки MembershipProvider и RoleProvider, и они отлично работают независимо на каждом сайте.

Что мне не хватает?

5
задан John Saunders 14 February 2012 в 20:06
поделиться