Azure AD Web App с петлей перенаправления входа в систему зомби

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

Этим утром я снова проверил их, и работает только слот разработчика. Staging и bluegreen оба перенаправляют на страницу входа в систему, но после проверки подлинности вступает в действие страшный бесконечный цикл перенаправления.

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

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

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


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

1 ответ

Решение

Оказывается, эта проблема была вызвана полуизвестной ошибкой в ​​реализации Microsoft Owin для System.Web: ошибка Katana #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 Saver, Ошибка проекта Katana # 197

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