Я постараюсь ответить на ваш вопрос немного более абстрактно ...
Перед тем, как я начну, мой фон смещен на MS, поэтому могут быть равные (или лучшие) варианты, доступные из других источников.
Две ссылки, которые я нашел очень полезными:
1) Руководство по идентификации и управлению доступом на основе утверждений
http://msdn.microsoft.com/en-us/library/ff423674.aspx
2) Программирование Windows Identity Foundation
Автор: Витторио Берточчи
Доступен в печатном виде в формате kindle
Существует множество других источников, но эти два охватывают несколько сценариев и дают хорошую справочную информацию для любого, кто хочет набрать скорость с вашей отправной точкой.
Я рекомендую другим авторам заполнить любые пробелы или ошибки :)
Я перебиваю множество технических деталей, чтобы сосредоточиться на заданном вопросе.
То, как я разрушаю федеративную идентификацию, примерно так:
- Приложение (я) [Приложение (я)]
- Служба (-ы) аутентификации [STS] *
- Набор претензий [Заявка (и)]
- Доверительные отношения (и) [Доверие (и)]
- Способ (ы) транспорта [Транспорт (ы)]
Служба безопасности отвечает за проверку личности пользователя и ручается за некоторые претензии.
Это достигается путем предоставления (1) подписанного большого двоичного объекта, содержащего утверждения, или (2) уникального идентификатора, который может использоваться третьей стороной для поиска утверждений.
Приложение, которое хочет предоставить пользователю услугу, может «доверять» STS, чтобы предоставлять ей утверждения, которые она может использовать для надлежащей работы с пользователем, таким образом облегчая ему ответственность за проверку пользователя (среди прочего, таких как как ведение централизованных метаданных, но я отвлекся).
У СС есть также возможность «доверять» другим СС, в основном говоря: «Если вы скажете, что этот человек - Джо Смит, и у них есть роли X, Y и Z, то я буду ручаться за то, что вы говорите!»
Итак, перефразируя:
Приложения (приложения) "доверяют" STS {который, в свою очередь, может "доверять" другим STS}, чтобы предоставить его / их Претензия
** Переключение передач **
МЫЛО против ОТДЫХА
В конце дня SOAP и REST оба являются типами сервисов, давайте называть их претензиями потребителей. Они оба хотят, чтобы кто-то дал им ведро, полное претензий, чтобы они могли выполнить свою работу и отослать назад кое-что.
Кроме того, оба типа служб могут быть представлены с утверждениями через строку запроса с использованием токена (при условии, что служба может обрабатывать некоторую перезапись URL-адреса) или через заголовок (HTTP для REST и SOAP для служб SOAP). В любом случае цель одна и та же: передать претензии или UID в приложение.
WS * против HTTP
Это (наряду с TCP / IP, SSL, секретными кольцами декодера и т. Д.) Методы передачи информации туда и обратно, хотя и с разной степенью уверенности, что кто-то посередине не может найти способ выдать себя за пользователя.
SAML против SWT
Это (наряду с кодировкой base 64, xml, простым текстом и т. Д.) Оба метода сериализации утверждений. Эти двое просто соответствуют стандартам, которые другие не делают, поэтому все могут говорить на одном языке.
** Возвращаясь к сути **
Каждая из этих комбинаций технологий действительна (в зависимости от приложения, некоторые из них менее безопасны, другие легче внедрить, другие лучше работают на устройствах более низкого уровня и т. Д.) И представляют собой способ выполнения работы одним человеком по сравнению с другим.
Таким образом, если у меня есть приложение .Net, которому был предоставлен набор заявок в SAML-формате через конвейер WS *, конечный результат заключается в том, что приложение имеет [заявки в SAML].
При некоторой обработке они могут быть преобразованы в [претензии в SWT].
Новые заявки затем могут быть упакованы и отправлены через HTTP / SSL в приложение Java.
ЕСЛИ приложение Java «доверяет» тому же STS (или STS, которое «доверяет» STS приложений .Net), то оно открывает заявки и выполняет свою работу.
Специалист по настройке, о котором вы упоминаете, должен произойти, вопрос заключается в том, кем и насколько он прозрачен.
- Дейв представляет совершенно достоверный пример одного способа выполнения настройки с помощью пользовательских настроек.code.
- ADFS предоставляет правила перевода, которые пытаются выполнить слияние и преобразование с помощью конфигурации.
Идея предоставления услуг на различных платформах / устройствах / приложениях /и т. д. совсем не странно, это именно тот сценарий, по которому строится весь этот материал по адресу
Я пытаюсь создать нечто вроде того, о чем вы спрашиваете, такЯ сам работал над такими же проблемами.
Упомянутая вами служба Engage позволяет связывать пользователей вашего приложения с внешними источниками и может использоваться для аутентификации этих пользователей ... аля "Я вижу тебяаутентифицировался в Google как John@gmail.com, я знаю вас как Джона Уокера с идентификатором 4321, о, смотрите, вы изменилинаша любимая настройка цвета в google - синий ... продолжайте! "
Чего он не делает, так это предъявляют претензии к вашему приложению, которые относятся к вашему приложению (если только все, что вам нужно знать, не исходит от Googleданные, в этом случае вы, скорее всего, создаете мэш, а не LOB-приложение ...
Другой сценарий:
- Пользователь переходит к вашему приложению
- Isперенаправлен на ваш STS
- перенаправлен на Google
- возвращен на ваш STS
- Добавлены претензии по электронной почте и любимые цвета (для каждого google)
- Списокдобавляются заявки на роли и ограничения на покупку (из хранилища данных вашего приложения)
- Пользователь возвращается в приложение
- Пользователь пытается купить фиолетовые виджеты за 10 000 долларов, и вы говорите: «Ну, вы можете купить только 5000 долларов»в кредит и ... вы уверены, что хотите фиолетовый, я слышал, что вы предпочитаете синий? "
Еще одно место, на которое я бы направил вас, - это служба контроля доступа AppFabric, предлагаемая Microsoft.(http://msdn.microsoft.com/en-us/library/ee732536.aspx) отказ от ответственности: я еще не использовал его , но, похоже, он выполняет те переводы, которые вы ищете, с большим количеством мяса, спрятанного для вас.