Внедрение SSO в .NET Web Farm для нескольких веб-сайтов электронной коммерции с WIF?

У меня есть, на мой взгляд, довольно сложный вопрос, поэтому я постараюсь сформулировать его здесь.

Я ищу решение для единого входа (SSO). Мне известны многие варианты, но я исключил большинство из них, добавляя критерии, которым они должны соответствовать. Вот критерии:

1.) SSO необходимо добавить в существующую «систему».
2.) Существующая «система» состоит из «X» веб-сайтов.
3.) Все «x» веб-сайты являются e -коммерция.
4.) Все веб-сайты принадлежат компании Y, для которой 95% системы было построено собственными силами.
5.) Все веб-сайты из числа «X» относятся к одному и тому же Веб-ферма.
6.) Все веб-сайты имеют следующие общие компоненты:

  • DAL (уровень доступа к данным)
  • База данных (тележки, заказы, пользователи, инвентарь и т. Д.)
  • Аутентификация (проверка подлинности форм как в WebForms, так и в MVC).

7.) Для того, чтобы текущая среда работала, Machine Key уже были синхронизированы между серверами с балансировкой нагрузки (и были в течение некоторого времени).
8.) Высокая доступность и стабильность необходимы из-за очень большой объем трафика.

Все эти критерии привели меня к выбору WIF и настраиваемой службы STS для использования с нашими существующими службами аутентификации членства. Такие вещи, как OpenID и другие решения с открытым исходным кодом, похоже, склоняются к совместимости между компаниями; Что не нужно и не нужно. Идеальное решение будет на 100% внутренним и позволит пользователю войти в систему на веб-сайте «1», делать все, что они хотят, а затем перейти на веб-сайт «2» (также размещенный за балансировщиком нагрузки и, возможно, даже на том же веб-сервер, поскольку пользователь был для веб-сайта "1") и уже вошел в систему.

Вот список альтернативных методов, которые я рассмотрел, и соответствующие причины для их исключения (или мне следует пересмотреть некоторые из этих альтернатив?).

  • OpenID: это было исключено по нескольким причинам, в основном потому, что моя организация ищет «внутренний» SSO, и интеграция с внешними веб-сайтами или система идентификаторов, используемая с внешними веб-сайтами, нежелательна.
  • CAS: По большей части это тоже кажется достойной альтернативой. В конечном итоге это было исключено, потому что технологии, которые он использует (Java, Apache, Maven и т. Д.), Потребуют дополнительных усилий и денег для понимания, внедрения, поддержки и расширения (в первую очередь .NET Shop).
  • OAuth: похоже, что он больше ориентирован на раскрытие защищенных данных через веб-службы. Полностью настраиваемый (http://www.codeproject.com/KB/aspnet/CrossDomainSSOModel.aspx): у полностью индивидуализированного подхода может быть слишком много времени на реализацию, и безопасность в этом методе больше беспокоит.
  • DotNetOpenAuth: зависит от OpenID.

Таким образом, возникает вопрос: будет ли WIF работать в нашей существующей среде с учетом балансировщика нагрузки и уже общих данных учетных записей пользователей на веб-сайтах, или есть лучший подход?

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

РЕДАКТИРОВАТЬ:

Просто чтобы прояснить, чего я хочу достичь (или думаю, что пытаюсь достичь, учитывая проведенное мной исследование):

Текущая настройка (JPEG, размещенный в Dropbox)
Желаемая настройка (JPEG, размещенный в Dropbox)


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


Ответы (1)


ADFS v2.0 выполняет проверку подлинности только в AD. Если ваш текущий метод аутентификации - это что-то другое (например, SQL Server), вам понадобится настраиваемая STS.

Все ли эти приложения ASP.NET?

Если это так, все они должны быть разрешены с помощью WIF.

Если нет, если, например, Java вам придется защищать их другим решением, например. OpenSSO / Ping Federate и объедините этот продукт с ADFS.

Если используется классический ASP, есть способы разрешить ADFS обрабатывать аутентификацию, но авторизация представляет собой проблему. Роли будут внутри объекта утверждений, к которому классический ASP не имеет доступа. Вы также можете использовать для этого C2WTS.

Вы смотрите на аутентификацию или авторизацию, или на то и другое? ADFS предоставляет роли внутри объекта утверждений, поэтому существующий механизм авторизации в ваших программах, возможно, придется изменить.

Вы можете балансировать нагрузку на сайты ADFS.

ADFS, безусловно, может включить единый вход на всех ваших сайтах. Это также потенциально позволяет вам объединяться с другими сайтами / организациями и использовать внешние учетные данные (например, Facebook) через Azure ACS, если вам нужно об этом подумать в будущем.

Он также позволяет интегрироваться с SharePoint 2010, CRM Dynamics 2010 и Office 365, все из которых поддерживают утверждения.

person rbrayb    schedule 06.10.2011
comment
Все веб-сайты являются .NET, а не классическими. Насколько я понимаю, с ADFS, Active Directory является источником, в отношении которого STS проверяет утверждение пользователя (я могу ошибаться). Если это так, то ADFS не является жизнеспособным вариантом, поскольку наши данные о членстве вообще не связаны с AD. Можно ли использовать WIF без AD? Если это не ADFS, можно ли не сбалансировать нагрузку? Также я считаю, что нам потребуется как аутентификация, так и авторизация, поскольку определенные страницы ведут себя по-разному, когда пользователи аутентифицированы. - person ooPeanutButter; 07.10.2011
comment
Это будет работать следующим образом: вы объедините свою STS (которая аутентифицируется, например, по SQL Server) с ADFS. Пользовательская служба STS может выполнять аутентификацию против всего, что вы хотите. Атрибуты, которые вы используете для авторизации, могут быть получены из любой комбинации AD, SQL Server или LDAP. Вам не нужно использовать WIF / ADFS для авторизации. Вы можете использовать его просто для SSO (аутентификации) и оставить свой код авторизации как есть - person rbrayb; 07.10.2011
comment
Кажется, что ваш ответ правильный, но не могли бы вы подтвердить это на диаграммах, которые я добавил при редактировании? Обратите внимание на полное отсутствие в схемах чего-либо, связанного с AD. Спасибо! - person ooPeanutButter; 07.10.2011
comment
Хорошо - значит, вам нужна настраиваемая STS, которая аутентифицируется на SQL Server. Посмотрите здесь - identityserver.codeplex.com. Кстати, есть прокси-сервер ADFS. - person rbrayb; 09.10.2011