Мы являемся поставщиком услуг и пытаемся реализовать систему единого входа, инициированную поставщиком услуг, с помощью библиотеки SAML2. У меня есть следующие вопросы
Когда конечный пользователь пытается получить доступ к защищенному приложению / ресурсу SP, как конечная точка SP должна идентифицировать, к какому IDP она должна перенаправить запрос на аутентификацию?
Есть ли какой-либо стандартный формат для принятия первого / первоначального запроса от пользователя IDP?
Какой стандартный формат отправки ответа IDP при перенаправлении запроса к IDP?
Наш технический стек: asp .net (4.5) MVC, C # и SAML2 Библиотека Sustainsys
Наш клиент (в терминологии SSO 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, все, что я нашел в Интернете, не содержит примеров или четких объяснений.