Как использовать Core ASP.Net Identity, балансировщик нагрузки и Identity.External вместе?

У меня возникают проблемы при объединении нескольких библиотек и среды со сбалансированной нагрузкой для создания успешных функций входа в систему.

Я работаю с Microsoft.AspNetCore.Identity.EntityFramework 2.0.3 и пользовательская реализация SAML, которая использует Microsoft.AspNetCore.Identity.SignInManager.GetExternalLoginInfoAsync() чтобы получить информацию для входа. Локально все это отлично работает вместе, даже в IIS. Но на сервере, на котором это развернуто, это не работает. GetExternalLoginInfoAsync() не удается пройти проверку подлинности, что заставляет систему идентификации перенаправить на страницу входа в систему и не позволяет продолжить проверку подлинности пользователя. Тем не менее, он периодически работал в среде с балансировкой нагрузки. Возможно, 1% времени это работает, в основном, после нового развертывания кода. Тогда это возвращается к неработающему.

Вот что я вижу в журнале при его развертывании на сервере с балансировкой нагрузки:

AuthenticationScheme: "Identity.External" не был аутентифицирован.

Это мой общий запуск Identity:

 services.AddIdentity<ApplicationUser, IdentityRole>()
         .AddEntityFrameworkStores<ApplicationDbContext>()
         .AddDefaultTokenProviders();

Кстати, стандартная реализация ASP.Net Identity прекрасно работает в этой среде с балансировкой нагрузки. Но не реализация с GetExternalLoginInfoAsync(),

Я посмотрел здесь на SO и на сайте MS, но я не могу найти ничего, что касается этого сценария.

Код, который я использую, основан на этом проекте. Вот где он пытается вызвать рассматриваемый метод:

 var info = await _signInManager.GetExternalLoginInfoAsync();
 if (info == null)
 {
     _logger.LogWarning("Null login info");
     return RedirectToPage("./Login");
 }

Локально, это не возвращает ноль, и info используется для входа в ASP.Net Identity. На сервере он возвращает ноль.

Как я могу сделать GetExternalLoginInfoAsync() работает на сервере 100%, с балансировкой нагрузки или нет, когда он работает нормально локально?

0 ответов

Другие вопросы по тегам