我正在尝试使用 ITfoxtec 构建 IdP。从服务提供商的站点,它将生成 SAML 请求并将它们重定向到 IdP。现在我在 IdP 的登录页面上,但我试图了解 ITfoxtec 代码是如何工作的。
[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()
收到来自 SP 的 SAML 请求并立即以一种方法返回 SAML 响应?当 SP 重定向到 IdP 时,我希望登陆 IdP 的登录页面,其中包含针对我自己的数据库进行身份验证的用户名/密码字段。如果成功,则将 SAML 响应返回给 SP。
如果我误解了这个概念,请告诉我或指导我如何实现它。