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

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

Пользователь UserA имеет доступ к ApplicationA.

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

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

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

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

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

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

НТН,
Ян



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