Как использовать SAML, когда один пользователь хочет выдать себя за другого пользователя

У меня следующий сценарий:

UserA имеет доступ к ApplicationA.

Пользователь B имеет доступ к ApplicationB. И ApplicationA, и ApplicationB используют ApplicationI в качестве поставщика удостоверений (настраиваемая реализация).

Во время входа в ApplicationA пользователь A хочет выполнить единый вход в ApplicationB как UserB (предположим, что UserB предоставил такое разрешение пользователю UserA).

ApplicationB должно знать, что UserA вошел в систему как UserB.

Как я могу использовать SAML 2.0 в этом случае? До сих пор все примеры SAML, которые я получил в Интернете, предназначены для одного пользователя, который пытается выполнить единый вход от имени себя на нескольких сайтах, но не для пользователя, выдающего себя за другого пользователя на другом сайте. В частности, я пытаюсь понять, как в этом случае использовать профиль SAML Web SSO с HttpBinding.


person 24x7Programmer    schedule 07.02.2013    source источник
comment
Звучит как плохое решение. Зачем вам нужно использовать UserA для использования учетной записи UserBs? По сути, UserA - это UserA, и он должен быть авторизован только как таковой. Если вы объясните причину этого, возможно, мы найдем лучшее решение.   -  person Stefan Rasmusson    schedule 07.02.2013
comment
Единый вход - это когда пользователь с уникальным набором учетных данных получает доступ к нескольким службам, не вводя свои учетные данные для каждой из них. не могли бы вы объяснить причину такого требования?   -  person Shurmajee    schedule 08.02.2013
comment
Речь идет о представителе колл-центра. Им может потребоваться специальный доступ к учетной записи клиента, чтобы увидеть, о чем они сообщают. Доступ к Приложению контролируется с помощью ответа SAML. SAML - это лишь один из способов уверенной передачи этой информации между приложениями, которые могут иметь разные домены безопасности.   -  person Ian    schedule 08.02.2013


Ответы (2)


Выдача себя за другое лицо не является чем-то неслыханным. Идентификационная информация UserA и UserB может быть передана в ответе SAML, но потенциально AppA и AppB должны иметь общую модель AuthZ, чтобы вы не подвергались какой-либо злонамеренной активности.

Так, например, AppA аутентифицирует UserA. Когда UserA хочет выполнить единый вход для AppB и выдать себя за UserB, для UserA будет сгенерирован ответ с идентификатором UserB, переданным в атрибуте, где «ImpersonateUser = UserB». UserA будет ТЕМОМ ответа. Когда AppB (действующий как SP) проверяет ответ, ему необходимо убедиться, что пользователю A разрешено олицетворять пользователя B через внутреннее отображение авторизации. Или AppB может просто доверять тому, что AppA уже проверил, что UserA может олицетворять UserB и соответствующим образом создавать сеанс. Однако это зависит от доверительных отношений между AppA и AppB.

HTH, Ян

person Ian    schedule 07.02.2013
comment
Привет, Ян, спасибо. это решает проблему построения ответа SAML. Не могли бы вы также указать, как в запросе SAML пользователь A хочет выдать себя за пользователя B? в SAMLRequest я могу указать только информацию, которая идентифицирует только один Субъект или Принципал? Как мне указать, что это запрос на выдачу себя за другое лицо? - person 24x7Programmer; 19.02.2013
comment
Я бы предположил, что AuthnRequst - не место для этой информации. Вероятно, лучше сделать запрос атрибута обратно к IDP, чтобы получить такую ​​информацию. В качестве альтернативы вы могли бы предоставить эту информацию заранее (вне диапазона), и вам не нужно было бы перезванивать IDP. - person Ian; 21.02.2013

Отвечая на ваш вопрос в своем ответе Яну, один из способов сообщить IDP с помощью AuthnRequest о том, что вы хотите выдать себя за другого пользователя, является использование элемента Extensions AuthnRequest.

person fajarkoe    schedule 09.03.2013