Я пытаюсь настроить проверку подлинности на нескольких серверах и поддоменах.У меня есть статические машинные ключи, настроенные для каждого приложения, например:
<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 (локально) или Server 2008 R2 (разработка и подготовка).
Я проверил, что ключи машины совпадают, кодировав строку на первичном сайте с помощью MachineKey.Encode
и расшифровывая результат на вторичном сервере с помощью MachineKey.Decode.
, я также проверил, что файл cookie .SHAREDAUTH передается второму приложению в запросе, как путем проверки заголовков запроса в соответствии с сообщениями Firefox и Chrome, так и с помощью отладчика на * 1013.* и Application_AuthenticateRequest.
Я вижу cookie во время выполнения Application_BeginRequest
, но он исчезает, когда вызывается Application_AuthenticateRequest
.Из того, что я могу понять, это, кажется, означает, что десериализация билета аутентификации не удалась, но я не могу понять, почему это может происходить в многосерверной среде, но не в среде с одним сервером, кроме разных ключей компьютера, что я уже подтвердил, что это не тот случай.
У меня также есть настраиваемые MembershipProvider и RoleProvider, и они отлично работают независимо на каждом сайте.
Чего мне не хватает?