Периодические ошибки “Сайт не может быть достигнут” и 401 с Duende SSO при использовании NTLM Negotiate в Chrome после очистки данных браузера

Вопрос или проблема

Сводка проблемы:

Я разрабатываю решение для единого входа (SSO) с использованием Duende IdentityServer и испытываю периодические проблемы с аутентификацией в Google Chrome при использовании Negotiate через NTLM. Проблема возникает, в частности, после очистки данных браузера и файлов cookie.

Симптомы:

Ошибка “Этот сайт недоступен”: Сразу после очистки данных браузера и попытки аутентификации я получаю ошибку “Этот сайт недоступен” при попытке доступа к странице /account/login.
Ответы 401 Неавторизовано: В DevTools Chrome на вкладке сети постоянно отображается ошибка 401 Неавторизовано по запросу аутентификации.
Понижение протокола с HTTP/2 до HTTP/1.1: Иногда, после первоначального сбоя, протокол понижается с HTTP/2 до HTTP/1.1, и аутентификация завершается успешно при повторной попытке.
Дополнительные детали:

Проблема воспроизводится только после очистки данных браузера; обычное серфинг не проявляет этой проблемы.

Сервер поддерживает как протоколы HTTP/2, так и HTTP/1.1.
Последующие попытки аутентификации (без очистки данных) проходят без ошибок.
Что я пробовал:

Тестирование без очистки данных: Аутентификация работает безупречно, когда данные браузера не очищаются.
Анализ сетевого трафика: Подтвердил ответы 401 и понижение протокола в DevTools.
Проверка конфигурации сервера: Убедился, что сервер правильно настроен для поддержки NTLM и HTTP/2.
Мои вопросы:

Почему очистка данных браузера в Chrome вызывает временную ошибку “сайт недоступен” при использовании аутентификации NTLM Negotiate?
Что вызывает первоначальную ошибку 401 и понижение протокола с HTTP/2 до HTTP/1.1?
Как я могу предотвратить или обработать эту проблему, чтобы обеспечить плавный опыт аутентификации, даже после очистки данных браузера?
Среда:

Браузер: Google Chrome (последняя версия на октябрь 2024)
Протокол аутентификации: Negotiate через NTLM
Реализация SSO: Duende IdentityServer
Бэкэнд: приложение ASP.NET Core, работающее на веб-сервере Kestrel
Операционная система: Windows Server (подробности версии)
Любые идеи, объяснения или решения будут очень ценны!

Ответ или решение

Проблема "Сайт недоступен" и ошибки 401 с Duende SSO при использовании NTLM Negotiate в Chrome

Введение

Вы столкнулись с распространенной проблемой, характерной для аутентификации через Single Sign-On (SSO) с использованием Duende IdentityServer и протокола NTLM Negotiate. Рассмотрим причины проблемы, возможные решения и рекомендации для получения стабильного пользовательского опыта.

Причины возникновения ошибок

  1. Очистка данных браузера
    Очистка кэша и куков приводит к сбросу сохраненных аутентификационных сессий в Chrome. Это может повлиять на установление нового соединения. В частности, при использовании NTLM происходит повторная аутентификация с сервером. Если пользовательский агент не может корректно инициализировать запрос на аутентификацию из-за отсутствия соответствующих кешированных данных, вы можете получить ошибку "Сайт недоступен".

  2. 401 Unauthorized ошибка
    Первоначальная ошибка 401 объясняется тем, что после очистки данных у клиента отсутствуют необходимые учетные данные для NTLM аутентификации, и сервер отклоняет запрос. Сервер не может выполнить запрос, поскольку он не распознает пользователя как авторизованного.

  3. Понижение протокола с HTTP/2 до HTTP/1.1
    Понижение протокола может свидетельствовать о проблемах с трубопроводами или несовместимых настройках. HTTP/2 имеет несколько оптимизаций для заголовков и потоков, которые могут не поддерживать старые механизмы аутентификации. Если на первом запросе аутентификация не удалась, браузер пытается перейти на более стабильный HTTP/1.1, который лучше справляется с ошибками, но при этом теряет некоторые преимущества HTTP/2.

Рекомендации по устранению проблемы

  1. Проверка конфигурации сервера
    Убедитесь, что сервер правильно настроен для работы с NTLM и поддерживает оба протокола (HTTP/2 и HTTP/1.1). Проверьте конфигурации Kestrel и убедитесь, что они соответствуют требованиям для аутентификации NTLM.

  2. Обработка ошибок аутентификации
    Создайте обработчики для управления состоянием сессии пользователя. Например, в случае возникновения ошибки 401, вы можете предоставить пользователям уведомление с предложением повторной попытки аутентификации. Это обеспечит более плавный переход в случае возникновения временных проблем.

  3. Недопустимые настройки браузера
    Рассмотрите возможность настройки параметров Chrome, чтобы он не сохранял данные между сессиями. Это может помочь минимизировать случаи, когда пользователю требуется повторно выполнить аутентификацию.

  4. Мониторинг и логирование
    Включите детальное логирование на уровне сервера, чтобы отслеживать периодические сбои и ошибки аутентификации, возникающие после очистки данных браузера. Анализ логов поможет выявить закономерности и улучшить стабильность системы.

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

Заключение

Раскрытые выше проблемы аутентификации с помощью Duende IdentityServer и NTLM Negotiate требуют тщательного анализа и тестирования. Предпринятые усилия по улучшению конфигурации сервера, обработке ошибок и глубинному монитору системы обеспечат большую стабильность и улучшат пользовательский опыт. Помните, что информирование ваших пользователей играет ключевую роль в успешной реализации SSO решений.

Если у вас возникнут дополнительные вопросы или потребуется углубленная поддержка, не сомневайтесь в необходимости проводить дальнейшие исследования или консультации с экспертами в области безопасности и аутентификации.

Оцените материал
Добавить комментарий

Капча загружается...