Интеграция Sustainsys.Saml2 в простое Asp. Net Core MVC веб-приложение - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь интегрировать 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");
    }

Любая помощь будет принята.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...