Проверка подлинности с помощью форм .NET в Azure. Какие изменения требуются для нескольких виртуальных машин?

В настоящее время мы переносим наше веб-приложение .NET в облачную службу Azure с веб-уровнем, работающим на нескольких узлах (первоначально на двух). Мне интересно, как мы должны изменить наш механизм аутентификации на основе форм для работы в среде балансировки нагрузки? Это соображение, которое нам никогда не приходилось делать в прошлом, поскольку наше приложение всегда ограничивалось только одним физическим сервером.

В настоящее время мы определяем наши защищенные папки в файле web.config следующим образом:

<location path="secure-area">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

Код на странице входа работает примерно так:

if accountIsValid = true then
   FormsAuthentication.SetAuthCookie(sessionID, False)
   response.redirect("secure-area/index.aspx")
end if

Затем активный сеанс извлекается по всему приложению следующим образом:

Dim sessionID as string = User.Identity.Name.ToString

Предположительно, этот метод не будет автоматически сохранять состояние сеанса на нескольких узлах? Я задавался вопросом, сможет ли Azure Fabric Controller разобраться во всем этом без необходимости внесения изменений в код. Возможно, желаемое за действительное!

Любая помощь или ссылки на онлайн-руководства будут высоко оценены!


person QFDev    schedule 21.02.2013    source источник


Ответы (1)


Это не столько вопрос об Azure, сколько о проверке подлинности с помощью форм с использованием приложений ASP.NET с балансировкой нагрузки. Проверка подлинности с помощью форм использует ключ machineKey на сервере для шифрования файла cookie, отправляемого клиенту. По умолчанию этот ключ генерируется случайным образом на сервере для каждого экземпляра. Чтобы аутентификация форм работала на нескольких узлах, вам нужно установить одинаковый ключ компьютера для обоих экземпляров в вашем файле web.config. Вот несколько примеров:

Работает ли проверка подлинности с помощью форм с веб-балансировщиками нагрузки?

http://msdn.microsoft.com/en-us/library/eb0zx8fc(v=vs.100).aspx

http://support.microsoft.com/kb/910443

Надеюсь, это сработает, удачного кодирования!

person Justin Beckwith    schedule 21.02.2013
comment
Спасибо! Упомянутая вами ветка переполнения стека, похоже, отвечает на мой вопрос, спасибо за помощь! - person QFDev; 22.02.2013