Веб-приложение Azure AD с циклом перенаправления входа в систему зомби

Я работаю над приложением Azure с разработчиком, промежуточным этапом и сине-зеленым слотом. Аутентификация обрабатывается Azure AD, и пользователь перенаправляется на страницу входа в microsoftonline. Вчера я скачал профили публикации для каждого слота и опубликовал все три. Я протестировал их на нескольких компьютерах и в браузерах, и все три слота работали правильно.

Сегодня утром я снова их протестировал, и работает только слот для разработчиков. И Staging, и сине-зеленый перенаправляют на страницу входа в систему, но после аутентификации начинает действовать ужасный бесконечный цикл перенаправления.

Сайт требует SSL, но, похоже, это не связано с проблемой. Когда слоты работают, доступ к ним через HTTP или HTTPS правильно перенаправляется на HTTPS.

URL-адреса ответов также настроены и, похоже, не связаны с проблемой.

Я не уверен, на что смотреть дальше. Есть ли периодически запускаемый процесс Azure, который может повлиять на слоты? Почему слот работал несколько часов, а потом переставал работать?


Цикл: (Отправка запроса в [приложение] - [слот] .azurewebsites.net => Ожидание [приложение] - [слот] .azurewebsites.net => Ожидание входа в систему.microsoftonline.com => Отправка запроса в [приложение] - [slot] .azurewebsites.net) и так далее.


person Jon Crowell    schedule 31.03.2017    source источник
comment
Вы использовали аутентификацию / авторизацию или компонент OpenID connect OWIN? И не могли бы вы поделиться URL-запросом для зацикливания? Вы можете записать его с помощью Fiddler.   -  person Fei Xue - MSFT    schedule 03.04.2017
comment
Мы используем OpenIdConnect.   -  person Jon Crowell    schedule 03.04.2017
comment
Вы имели в виду, что после ввода правильного имени пользователя и пароля он снова перенаправляется на страницу входа, а не на rediect_uri, который вы передали в запросе?   -  person Fei Xue - MSFT    schedule 04.04.2017
comment
А может ли проблема воспроизвести при использовании протокола HTTPS?   -  person Fei Xue - MSFT    schedule 04.04.2017
comment
Когда слоты работают, не имеет значения, добавляю ли я к URL-адресу префикс HTTP или HTTPS. Оба правильно перенаправляют на HTTPS, и сайт работает отлично. Как только слот загнивает, ввод правильного имени пользователя и пароля приводит к бесконечному циклу независимо от протокола. Я отредактировал свой вопрос, чтобы включить шаги в цикл.   -  person Jon Crowell    schedule 04.04.2017
comment
Полезно ли при этой проблеме открывать окно в режиме инкогнито?   -  person Fei Xue - MSFT    schedule 05.04.2017
comment
Нет. Слот работает во всех сценариях, пока что-то не испортит его. Протокол, браузер, машина, кеширование, инкогнито не имеют никакого эффекта.   -  person Jon Crowell    schedule 05.04.2017
comment
Я открыл заявку в службу поддержки Microsoft. Когда это будет решено, я отправлю ответ.   -  person Jon Crowell    schedule 06.04.2017
comment
@JonCrowell Вы нашли решение?   -  person Arnab Chakraborty    schedule 20.04.2017
comment
Может быть. Я нашел потенциальное решение и развернул его сегодня. Я отправлю его в качестве ответа, если слоты останутся стабильными в течение пары дней.   -  person Jon Crowell    schedule 20.04.2017


Ответы (1)


Оказывается, эта проблема была вызвана полуизвестной ошибкой в ​​реализации Microsoft Owin для System.Web: Katana Bug # 197. Существует даже пакет nuget, единственная цель которого - предоставить обходной путь до тех пор, пока ошибка не будет исправлена. По состоянию на апрель 2017 года пакет nuget был загружен 96 000 раз.

введите здесь описание изображения

Из файла readme.md для пакета nuget Kentor.OwinCookieSaver:

«В некоторых случаях из-за этой ошибки файлы cookie, установленные Овином, таинственным образом исчезают».

Обходной путь потрясающе прост. Добавьте пакет nuget Kentor.OwinCookieSaver, а затем добавьте промежуточное ПО KentorOwinCookieSaver перед промежуточным ПО для обработки файлов cookie.

Добавь это:

app.UseKentorOwinCookieSaver();

непосредственно перед этим:

app.UseCookieAuthentication(new CookieAuthenticationOptions());

Если вы хотите узнать больше, вот несколько полезных ссылок: Owin Репозиторий для сохранения файлов cookie, Ошибка проекта Katana № 197 < / а>

person Jon Crowell    schedule 24.04.2017
comment
Есть идеи, исправлена ​​ли эта ошибка? У меня очень похожая проблема, похоже, это ошибка MS. - person Scuba Steve; 28.11.2018
comment
попробовал это исправление кентора. Не сработало. По-прежнему идет в петли. Для некоторых людей это иногда работает, в других случаях - нет и просто зацикливается - без изменения кода. - person Ayson Baxter; 05.12.2019
comment
Добавление пакета nuget Kentor.OwinCookieSaver решило эту проблему для нашего приложения. Пробовал более 3 часов играть с настройками в Azure, но безуспешно. Это сработало при первом развертывании. - person BigJoeNH; 18.12.2019
comment
Это огромное облегчение, особенно когда вы пытаетесь устранить миллион вещей, которые, по вашему мнению, могли сделать неправильно. - person Jon Crowell; 19.12.2019