C# Sustainsys.Saml2在普通Asp.Net核心MVC web应用程序中的集成
我正在尝试将Azure AD SSO与Sustainsys Saml2库集成。 我已经在Azure中创建了Enterpise应用程序。当我单击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
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)
返回重定向到操作(“索引”、“主页”);
}
如果您有任何帮助,我们将不胜感激。关于问题的第二部分,如果您仍在苦苦挣扎,请执行第一个代码块中所示的操作: