Создание кастомного STS-IP с WIF и почему бы и нет

Мне необходимо реализовать сервер STS-IP для наших веб-приложений и сервисов. Серверу потребуется выпустить токены SAML для следующих сценариев:

  1. Деловой партнер отправляет свой токен SAML, который конвертируется в токен SAML с утверждениями, необходимыми для наших приложений. Этот токен используется для доступа к нашим веб-приложениям и службам.
  2. В наших общедоступных приложениях необходимо, чтобы пользователь вошел в систему (с помощью проверки подлинности с помощью форм), а затем получил доступ к нашим веб-приложениям и службам с помощью токена SAML.
  3. Наши клиенты (без доверия STS) должны пройти аутентификацию на нашем сервере STS-IP, получить токен SAML и использовать этот токен для доступа к нашим службам WCF.

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

В этих сценариях вы можете предположить, что внутреннее хранилище аутентификации представляет собой настраиваемую реализацию с аутентификацией, хранящейся в Active Directory, и авторизацией, хранящейся в базе данных.

Итак, я подумал, что нам нужно создать собственный сервер STS-IP, используя что-то вроде Windows Identity Framework. Но я также читал, что вам не следует этого делать, потому что это может занять некоторое время.

Могу ли я использовать стандартный сервер STS-IP? Все, что я видел, - это сопоставление одной системы с другой (SAML с SAML или AD с SAML).

Почему создание готового к эксплуатации STS-IP займет «много времени»? Я очень легко построил его с помощью WIF, но, полагаю, я не понимаю рисков, связанных с этим.


person Mike Therien    schedule 15.07.2010    source источник


Ответы (5)


Что касается фразы «Это займет много времени», документация, показывающая, как это сделать, очень скудна. См. Здесь: http://social.msdn.microsoft.com/Forums/en-US/Geneva/thread/257d93be-165e-45a6-a277-fc7ed2286e7d/

В любом случае вам просто нужно просмотреть образцы кода, которые предоставляет Microsoft: Google for Identity Developer Training Kit. Это должно помочь вам начать работу.

person Vivian River    schedule 27.07.2010
comment
Я должен согласиться с документацией. Я нашел очень полезный проект под названием StarterSTS. startersts.codeplex.com - person Mike Therien; 28.07.2010

Почему вы не рассматриваете возможность использования ADFS? Если резервным хранилищем для аутентификации является AD, то ADFS, вероятно, является хорошим кандидатом для оценки.

person Eugenio Pace    schedule 30.07.2010
comment
Мы рассматриваем это, но нам нужны формы аутентификации для нашего веб-сайта, который аутентифицируется на STS-IP. Я не уверен, что ADFS может это сделать. Кроме того, в наших учетных записях AD есть настраиваемые атрибуты, которые нам нужно будет использовать в утверждениях. Я еще не установил ADFS, так как у меня еще нет тестового сервера Windows. - person Mike Therien; 02.08.2010
comment
ADFS покажет вам форму, если вы попытаетесь получить к ней доступ с машины вне сети. Если вы находитесь внутри сети, это просто сработает. Запрос атрибутов в AD и отправка их в виде утверждений в токене - это нестандартная функция в ADFS. кроме того, это бесплатно :-) ADFS не поддерживает аутентификацию по всему, что не является AD. (Что, похоже, не в вашем случае) - person Eugenio Pace; 03.08.2010

Прежде чем писать свою собственную STS, вы можете проверить этот блог и внимательно изучить функции, которые могут вам понадобиться в STS. То, что вы можете построить его самостоятельно, не всегда означает, что вы должны это делать.

расширение adfs на несколько хранилищ идентификаторов и атрибутов

person Larry    schedule 29.05.2012

Их «почему бы и нет» относительно просто: зачем тратить недели на создание чего-то, что, вероятно, будет обрабатывать только один вариант использования, когда вы можете поставить готовую STS за день, которая охватит все виды вещей, которые может предложить ваша компания. вверх с? Для его самостоятельного создания также потребуется, чтобы вы стали экспертом в области SAML (что, вероятно, не самое лучшее время для вашей компании).

Проверьте - http://www.pingidentity.com/our-solutions/pingfederate.cfm

Удачи - Ян

person Ian    schedule 30.07.2010

Согласитесь с @eugenio - почему бы не использовать ADFS?

ADFS может аутентифицироваться только в AD, как обсуждалось, но может получать атрибуты авторизации от сервера AD / LDAP / SQL.

Гайки и болты для STS доступны в VS 2010 плюс наборы инструментов для идентификации. Простой STS можно быстро создать прототип.

Есть несколько примеров. StarterSTS уже упоминается плюс SelfSTS.

Труднее всего получить правильную безопасность, особенно если это будет частью производственной системы. Согласно "Стиву по безопасности" Создайте собственную службу федерации каталогов:

Это может звучать так, как будто я думаю, что это будет синхронизация для разработки этой системы и обеспечения ее безопасной работы, но на самом деле в нее нужно будет многое вложить, чтобы защитить сеть, сотрудников и данные, которые, возможно, могут взаимодействовать с. Надежно разрабатывать приложения сложно. Гораздо сложнее разрабатывать безопасные приложения, единственная ответственность которых связана с безопасностью.

Это причина того, что все образцы в Интернете имеют отказ от ответственности, выделенный жирным шрифтом:

Не использовать в производственной среде

person rbrayb    schedule 07.03.2011