C# Sustainsys.Saml2在普通Asp.Net核心MVC web应用程序中的集成

C# Sustainsys.Saml2在普通Asp.Net核心MVC web应用程序中的集成,c#,saml-2.0,sustainsys-saml2,C#,Saml 2.0,Sustainsys Saml2,我正在尝试将Azure AD SSO与Sustainsys Saml2库集成。 我已经在Azure中创建了Enterpise应用程序。当我单击Test single sign-on时,身份验证成功,我被重定向到LoginCallback方法,在那里我必须解析响应,但不清楚如何使用Sustainsys.Saml2执行此操作 我遇到的第二个问题是,无论在哪里设置了重定向URI,成功登录后的应用程序(不是Azure dashboard)总是重定向到https://localhost:44354/Sam

我正在尝试将Azure AD SSO与Sustainsys Saml2库集成。 我已经在Azure中创建了Enterpise应用程序。当我单击
Test single sign-on
时,身份验证成功,我被重定向到
LoginCallback
方法,在那里我必须解析响应,但不清楚如何使用Sustainsys.Saml2执行此操作

我遇到的第二个问题是,无论在哪里设置了
重定向URI
,成功登录后的应用程序(不是Azure dashboard)总是重定向到
https://localhost:44354/Saml2/Acs
而不是
https://localhost:44354/Account/LoginCallback

我曾尝试在library repo中使用.netcore示例,但它使用了我试图避免的ASP标识。因此,我创建了普通ASP.NET Core 2.2 MVC web应用程序,并通过nuget Sustainsys.Saml2.AspNetCore2 2.3.0版本添加了该应用程序。在Startup.cs中,我定义了以下配置:

 services.AddAuthentication()
          .AddSaml2(Saml2Defaults.Scheme, options =>
          {
              options.SPOptions.EntityId = new EntityId("IDName");
              options.SPOptions.ReturnUrl = new Uri($"https://localhost:44364/Account/LoginCallback"); // always get ignored and set as Saml2/Asc
              options.IdentityProviders.Add(
                  new IdentityProvider(
                      new EntityId("https://sts.windows.net/aaaaaaaaaaaaaaa/"), options.SPOptions)
                  {
                      LoadMetadata = true,
                      MetadataLocation = "https://login.microsoftonline.com/aaaaaaaaa/federationmetadata/2007-06/federationmetadata.xml?appid=xxxxxxxxxxxxxxx",
                  });

              //options.SPOptions.ServiceCertificates.Add(new X509Certificate2("Sustainsys.Saml2.Tests.pfx"));
          });
接下来,我使用两种方法创建了一个帐户控制器:

    [HttpGet("Login")]
    [AllowAnonymous]
    public IActionResult Login(string returnUrl)
    {
        return new ChallengeResult(
            Saml2Defaults.Scheme,
            new AuthenticationProperties
            {
                // It looks like this parameter is ignored, so I set ReturnUrl in Startup.cs
                //RedirectUri = Url.Action(nameof(LoginCallback), "Account", new { returnUrl })
            });
    }

    [HttpPost]
    [AllowAnonymous]
    public async Task<IActionResult> LoginCallback( string returnUrl)
    {
       // How do I parse the response (saml) from body

        return RedirectToAction("Index", "Home");
    }
[HttpGet(“登录”)]
[异名]
公共IActionResult登录(字符串返回URL)
{
返回新的挑战者结果(
Saml2Defaults.Scheme,
新的AuthenticationProperties
{
//看起来这个参数被忽略了,所以我在Startup.cs中设置了ReturnUrl
//RedirectUri=Url.Action(nameof(LoginCallback),“Account”,new{returnUrl})
});
}
[HttpPost]
[异名]
公共异步任务LoginCallback(字符串返回URL)
{
//如何解析来自body的响应(saml)
返回重定向到操作(“索引”、“主页”);
}

如果您有任何帮助,我们将不胜感激。

关于问题的第二部分,如果您仍在苦苦挣扎,请执行第一个代码块中所示的操作: