Мы используем аутентификацию Microsoft Owin для нашего приложения, которое перенаправит пользователя на страницу входа в Azure Active Directory. После успешного входа в систему будет отображаться домашняя страница нашего приложения.
Это будет работать без каких-либо проблем несколько раз. Однако после нескольких попыток, если я попытаюсь снова войти в систему, после нажатия кнопки ВХОД (на странице входа в Azure Active Directory) он не будет перенаправлен на нашу домашнюю страницу. Он загружает пустую страницу, никогда не заканчивает загрузку и зависает. В адресной строке отображается переключение запросов между нашей домашней страницей и страницей входа в Azure.
Ниже приведен код, используемый для входа:
public void SignIn()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/Home/Index" }, OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}
Обновление 1:
столкнулся с новой проблемой:
Здравствуйте, Витторио,
Спасибо!!! для вашего ответа. Как вы упомянули, после удаления атрибута Authorize он отлично работает локально (из исходного кода). Однако, как только мы развернем его на Azure, после нескольких попыток входа в систему мы столкнемся с другой проблемой, где нам вообще не разрешен вход в систему. Сведения о пользователе не загружаются из-за сбоя аутентификации и перенаправления на страницу с ошибкой (пользовательская страница).
Ниже приведен фрагмент кода, который мы используем для получения сведений о пользователе, однако много раз мы попадаем в часть ELSE (claimsIdentity.IsAuthenticated возвращает FALSE).
var claimsIdentity = User.Identity as ClaimsIdentity;
if (claimsIdentity.IsAuthenticated) {
accesstoken = claimsIdentity.FindAll("urn:accesstoken:access_token").FirstOrDefault().Value;
domainname = claimsIdentity.FindAll("urn:appdomain:domain").FirstOrDefault().Value;
} else {
return RedirectToAction("Error", "Home");
}
Пожалуйста, дайте нам знать, если мы что-то упустили.