Повторное использование утверждения SAML

Я использую единый вход с несколькими поставщиками услуг. Вот мое основное понимание:

1) Браузер (пользователь) запрашивает ресурс у поставщика услуг (SP).
2) SP перенаправляет (с запросом SAML) поставщику удостоверений (IdP).
3) Поскольку это первый вход в систему, Пользователь предоставляет (IdP) свои действительные учетные данные.
4) Затем IdP перенаправляет браузер (с ответом SAML, который включает токен SAML) на страницу SP.

Теперь предположим, что у меня есть поставщик услуг A и поставщик услуг B. Пользователь выполнил шаг для поставщика услуг A. От поставщика услуг A (в моем сценарии salesforce.com) я написал серверный метод < / strong>, который создает экземпляр вызова к конечной точке поставщика услуг B. Можно ли повторно использовать утверждение SAML в этом случае? Т.е. будет ли поставщик услуг B доверять бэкэнд-методу?


person thebiglebowski11    schedule 27.01.2015    source источник


Ответы (2)


Вам нужно будет настроить Поставщика услуг B, чтобы он принимал, понимал и интерпретировал Assertion, полученный Поставщиком услуг A. Это определенно не будет работать из коробки.

SAML Assertion, включенный в SAML Response для поставщика услуг A, содержит фрагменты данных, которые коррелируют его с исходным SAML Request и определяют получателей сообщения (например, с использованием элементов SubjectConfirmationData и Audience). Поставщик услуг B должен будет игнорировать значения в этих полях, поскольку на самом деле он не является получателем Assertion с отступом.

Проблема того, как установить доверительные отношения между двумя машинами, на которых удостоверение пользователя подтверждается поставщиком удостоверений, может быть решена с помощью нескольких стандартных подходов. Один из них - использовать Session Token Service (на основе WS-Trust), который определяет, как запрашивать и выпускать токены сторонним сервисам. Другой вариант - использовать OAuth 2.0. Конечно, вы также можете просто аутентифицировать поставщика услуг A для поставщика услуг B, используя настраиваемую схему с паролем, HMAC, ...

person Vladimír Schäfer    schedule 28.01.2015

Короткий ответ - нет, если поставщик услуг B реализован как стандартный SAML 2.0 SP.

Утверждения SAML 2.0 являются «целевыми» и подписываются. У них есть указанная аудитория и URL-адрес получателя. Вы не можете их изменить, не нарушив подписи. Утверждение, полученное SP A, содержит имя SP A в качестве аудитории и конечную точку ACS SP A в качестве URL-адреса получателя. Такое утверждение не будет принято SP B.

Что мешает вам просто вызвать SP B стандартным способом и позволить ему инициировать свой собственный поток SAML 2.0? Другой вариант - выполнить инициированный IDP поток SSO для SP B. Однако не все реализации IDP поддерживают его.

person vap78    schedule 29.01.2015