Можно ли реализовать службу единого входа (пользовательская STS, WIF) так, чтобы она была высокодоступной (кластеризованной или в веб-ферме)?

Недавно я задал здесь вопрос: wif">Внедрение системы единого входа в веб-ферме .NET для нескольких веб-сайтов электронной коммерции с помощью WIF?, в котором излагаются детали моего следующего вопроса.

Краткое изложение вопроса/решения заключается в том, что ряд веб-сайтов, которым требуется решение SSO, может быть реализован с использованием WIF с настраиваемой STS для проверки пользователей на соответствие SQLMembershipProvider какого-либо типа. При разработке схемы для этой системы возникла еще одна проблема.

Целью идеи веб-серверов в веб-ферме является устранение единой точки отказа (SPOF) для веб-сайтов, что приводит к более надежному предоставлению услуг. Аналогичные стратегии хорошо задокументированы для серверов баз данных и серверов электронной почты. Можно ли внедрить решение SSO без создания единой точки отказа в существующей высокодоступной среде с использованием пользовательских STS и WIF? Какие дополнительные шаги/стратегии необходимо будет реализовать, чтобы удалить этот SPOF?

Более-менее вопросы такие:

  • Можно ли разместить пользовательскую службу STS в среде с балансировкой нагрузки?
  • Можно ли разместить WIF в среде с балансировкой нагрузки (без использования сторонней реализации, такой как Azure)?
  • Какие конкретные технологические проблемы необходимо решить для достижения этой цели (или можно ли это сделать так же, как веб-серверы)?
  • Это ВООБЩЕ хорошая идея? Каковы некоторые потенциальные проблемы?

Я провел довольно много исследований в Интернете и не смог найти полный ответ на этот вопрос. Я все еще новичок в аутентификации на основе утверждений и федеративных удостоверениях, поэтому простите меня, если я расплывчат или туп.

Я пытаюсь вставить квадратный штифт в круглое отверстие?

Пожалуйста, дайте мне знать, если вам нужны какие-либо разъяснения.


person ooPeanutButter    schedule 10.10.2011    source источник


Ответы (2)


• Можно ли разместить пользовательскую службу STS в среде с балансировкой нагрузки?

Да, хотя вам могут понадобиться "липкие сеансы"

• Можно ли разместить WIF в среде с балансировкой нагрузки (без использования сторонней реализации, такой как Azure)?

WIF — это просто набор классов .NET, который добавляется в качестве ссылки в проект VS. Это позволяет приложению поддерживать утверждения. Вы не можете развернуть WIF «сам по себе». Вы развертываете приложение с поддержкой утверждений.

• Какие конкретные технологические проблемы необходимо решить для достижения этой цели (или можно ли это сделать так же, как веб-серверы)?

Для ADFS с фермой серверов: «Вторичные серверы федерации хранят копию базы данных конфигурации AD FS с основного сервера федерации, но эти копии доступны только для чтения. Дополнительные серверы федерации подключаются к первичному серверу федерации и синхронизируют данные с ним в фермы, опрашивая ее через регулярные промежутки времени, чтобы проверить, не изменились ли данные. Вторичные серверы федерации существуют для обеспечения отказоустойчивости основного сервера федерации, действуя для балансировки нагрузки на запросы доступа, которые выполняются на разных сайтах в вашей сетевой среде».

Не знаете, какая часть из них относится к функциям AFDS, а какая — к стандартным функциям SQL Server? Вы можете использовать SQL Server для настройки двух или более серверов для совместной работы в качестве серверного кластера, чтобы обеспечить высокую доступность вашей пользовательской STS для обслуживания входящих клиентских запросов.

• Это вообще хорошая идея? Каковы некоторые потенциальные проблемы?

Насколько я помню, единственная проблема, с которой мы столкнулись, это проблема «липких сессий».

Кроме того, см. Пошаговое руководство по высокой доступности и отказоустойчивости ADFS 2.0

Обновление: посмотрите Программирование Windows Identity Foundation . Проблема в том, что файлы cookie сеанса WIF защищены ключом машины. Витторио предлагает:

  • Прикрепленные сеансы
  • Синхронизировать ключи машины
  • Используйте SSL-сертификат на каждой машине

В книге есть раздел о разработке пользовательских STS. Я рекомендую это.

person rbrayb    schedule 10.10.2011

  • Можно ли разместить пользовательскую службу STS в среде с балансировкой нагрузки?

Нет никаких причин, по которым вы не можете развернуть пользовательскую STS в веб-ферме. Конечная точка пассивной федерации — это просто веб-сайт, на который ваша проверяющая сторона WIF будет перенаправляться, когда ей потребуется пройти аутентификацию. Поэтому вы просто развернете несколько экземпляров веб-сайта STS в веб-ферме.

  • Можно ли разместить WIF в среде с балансировкой нагрузки (без использования сторонней реализации, такой как Azure)?

Как упоминал nzpcmad, вам потребуется синхронизировать машинные ключи между приложениями проверяющей стороны в среде с балансировкой нагрузки. Поскольку токен SAML шифруется с помощью ключа компьютера, приложение должно расшифровать его с помощью того же ключа.

  • Какие конкретные технологические проблемы необходимо решить для достижения этой цели (или можно ли это сделать так же, как веб-серверы)?

Смотрите другие ответы.

  • Это ВООБЩЕ хорошая идея? Каковы некоторые потенциальные проблемы?

Да, высокая доступность и избыточность — это очень хорошая идея. ADFS имеет встроенные возможности для работы в веб-ферме, но для пользовательской STS вам просто нужно убедиться, что конфигурация вашей STS согласована между серверами. Я бы рекомендовал хранить конфигурацию в базе данных, если это возможно.

person Garrett Vlieger    schedule 11.10.2011