Я пытаюсь интегрировать Azure AD SSO с библиотекой Sustainsys Saml2. Я создал приложение Enterpise в Azure. Когда я нажимаю Test single sign-on
, аутентификация проходит успешно, и меня перенаправляют на метод LoginCallback
, где я должен проанализировать ответ, но неясно, как это сделать с помощью Sustainsys.Saml2?
Второй выпуск i Имейте в виду, что независимо от того, где установлена RedirectUri
, приложение (не Azure панель мониторинга) после успешного входа в систему всегда перенаправляется на https://localhost:44354/Saml2/Acs
вместо https://localhost:44354/Account/LoginCallback
Я пытался следовать. Пример netcore в репозитории библиотеки, но он использует ASP Identity, которого я пытаюсь избежать. Поэтому я создал простое ASP. NET Core 2.2 MVC веб-приложение и добавил его через 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");
}
Любая помощь будет принята.