Я пытаюсь создать IdP, используя ITfoxte c. С сайта поставщика услуг он генерирует запросы SAML и перенаправляет их в IdP. Сейчас я нахожусь на странице входа IdP, но пытаюсь понять, как работают коды ITfoxte c.
[Route("Login")]
public IActionResult Login()
{
var requestBinding = new Saml2RedirectBinding();
var relyingParty = ValidateRelyingParty(ReadRelyingPartyFromLoginRequest(requestBinding));
var saml2AuthnRequest = new Saml2AuthnRequest(config);
try
{
requestBinding.Unbind(Request.ToGenericHttpRequest(), saml2AuthnRequest);
// **** Handle user login e.g. in GUI ****
// Test user with session index and claims
var sessionIndex = Guid.NewGuid().ToString();
var claims = CreateTestUserClaims(saml2AuthnRequest.Subject?.NameID?.ID);
var response = LoginResponse(saml2AuthnRequest.Id, Saml2StatusCodes.Success, requestBinding.RelayState, relyingParty, sessionIndex, claims);
return response;
}
catch (Exception exc)
{
#if DEBUG
Debug.WriteLine($"Saml 2.0 Authn Request error: {exc.ToString()}\nSaml Auth Request: '{saml2AuthnRequest.XmlDocument?.OuterXml}'\nQuery String: {Request.QueryString}");
#endif
return LoginResponse(saml2AuthnRequest.Id, Saml2StatusCodes.Responder, requestBinding.RelayState, relyingParty);
}
}
Почему этот метод Login()
получает запрос SAML от SP и возвращает Ответ SAML сразу в одном методе? Когда SP перенаправляет на IdP, я ожидаю попадания на страницу входа IdP с полями имени пользователя и пароля, которые аутентифицируются в моей собственной базе данных. Затем верните ответ SAML SP, если все прошло успешно.
Пожалуйста, дайте мне знать, если я неправильно понимаю концепцию, или сообщите мне, как это реализовать.