Реализация сценария, инициированного SP, с использованием библиотеки SAML2 - PullRequest
0 голосов
/ 10 января 2019

Мы являемся поставщиком услуг и пытаемся внедрить единый вход, инициированный SP, используя библиотеку SAML2 . У меня есть следующие вопросы

  1. Когда конечный пользователь пытается получить доступ к защищенному приложению / ресурсу SP, как конечная точка SP должна определить, к какому IDP следует перенаправить запрос на аутентификацию?

  2. Существует ли какой-либо стандартный формат для приема первого / начального запроса от пользователя IDP?

  3. При перенаправлении запроса в IDP, в каком стандартном формате отправляется ответ в IDP?

Наш технический стек: asp .net (4.5) MVC, C # и SAML2 Библиотека Sustainys

Наш клиент (в терминах единого входа IDP-Идентификатор провайдера) использует: SAML, инициированная SP в Azure AD

Использование библиотеки SAML2 Я реализовал единый вход, инициированный IDP, в котором IDP достигает нашей конечной точки ответом SAML, и мы проверяем его с помощью сертификата IDP и извлечения атрибутов и т. Д.

Итак, для инициатора SP я получил следующее,

[Route("RequestAccess")]
[HttpPost]     
public ActionResult InitialRequest()
{
   // How to Identify user and its IDP url?
   // What should be the return type? (To redirect user to IDP)
}

// После проверки IDP может достичь нашей существующей конечной точки, которая проверяет утверждение и перенаправляет пользователя. Я реализовал эту часть и хорошо работает в случае установки, инициированной IDP.

[Route("AssertionConsumer")]
[HttpPost]
public ActionResult ValidateIdpRequest()
{
   var options = Saml2Controller.Options; //Coming from config
   CommandResult result = CommandFactory.GetCommand(CommandFactory.AcsCommandName)
                                     .Run(Request.ToHttpRequestData(),options);
string userName = result.Principal.FindFirst(ClaimTypes.NameIdentifier)?.Value;
//Set the cooking in response
//Return
}

Что мне не хватает? Любые предложения / вопросы приветствуются.

Для сценария, инициированного SP, все, что я нашел в Интернете, не имеет примера или объясняет ясно.

1 Ответ

0 голосов
/ 10 января 2019
  1. Эта проблема называется «обнаружением домашнего царства». Как-то пользователь много выбирает. Иногда это делается путем представления списка Idps, из которых пользователь может выбрать. Иногда это делается путем предоставления разных URL-адресов разным пользователям (например, customerX.myservice.com), где каждый поддомен customerX сопоставляется с определенным Idp. Библиотека Sustainsys.Saml2 поддерживает стандарт службы обнаружения SAML2, чтобы справиться с этим.

  2. Вы сами используете низкоуровневую библиотеку Sustainsys.Saml2, которая дает вам много вещей, с которыми вы можете справиться. Он не предназначен для непосредственного использования. Вместо этого используйте высокоуровневую библиотеку Sustainsys.Saml2.Owin или Sustainsys.Saml2.Mvc. Он выполнит перенаправление и обработает возвращенный результат для вас.

  3. См. 2.

...