Chrome basic auth и дайджест-проблема с аутентификацией

У меня возникли проблемы с отменой некоторых HTTP-запросов в Chrome, и я подозреваю, что причиной являются кэшированные данные аутентификации. Позвольте мне сначала записать некоторые важные факторы, касающиеся приложения, которое я пишу.

  1. Некоторое время я использовал схему базовой аутентификации для защиты нескольких сервисов и ресурсов в моем веб-приложении.
  2. В то же время я интенсивно использовал / тестировал приложение, используя Chrome, и моя основная учетная запись Google была полностью синхронизирована. Чаще всего я использовал свое имя - "lukasz" - в качестве имени пользователя в Basic Auth.
  3. Недавно я переключил свое приложение на использование дайджест-аутентификации.
  4. Теперь некоторые из HTTP-запросов, которые я делаю, терпят неудачу с status=failed без видимой причины. Это происходит только тогда, когда я использую пользователя "lukasz", если я ввожу другое уникальное имя пользователя - нет проблем.

Я искал повсюду в бэкэнде и во внешнем интерфейсе, и я не мог найти проблему в нашем коде. Я легко могу воспроизвести это с пользователем "lukasz" каждый раз. Поэтому я вернул свой код в Basic Auth (не касаясь остальной части приложения), и проблема исчезла.

Это привело меня к мысли, что с кэшированными паролями что-то не так. Поэтому я очистил кэш в Chrome, но это не помогло. После нескольких часов анализа проблемы я решил убедиться, что у меня запущен свежий экземпляр Chrome, поэтому я переустановил его (удалив данные с диска по пути). TADAAA! Проблема исчезла, и я больше не мог ее воспроизводить. Затем я синхронизировал свою учетную запись Google с этим недавно установленным Chrome, и через некоторое время запросы к моему приложению снова перестали выполняться!! Поэтому я более внимательно посмотрел на это (очистка данных профиля с диска и повторное выполнение всех шагов), и, действительно, похоже, что проблема начинается, как только моя учетная запись синхронизируется с облаком!

Да, я знаю, это звучит хитро. Это звучит смешно. Звучит глупо. Но я почти уверен, что эти две проблемы как-то связаны (сбой запросов и синхронизация аккаунта).

Моя идея такова: Chrome почему-то вспомнил, что я использовал "lukasz/my-pass" с Basic Auth для определенных сервисов. После того, как я переключился на Digest Auth, та же самая комбинация учетных данных (lukasz/my-pass) теперь ведет себя забавно. Возможно, под капотом Chrome все еще думает, что это Basic Auth, и отменяет запросы, когда узнает иначе?

ОБНОВЛЕНИЕ: я сделал некоторую низкоуровневую отладку с chrome://net-internals/ и кажется, что проблема при чтении записи в кэш. Кажется, это подтверждает мое первоначальное предположение. Я провел некоторое расследование и нашел эту статью. Очевидно, что всегда добавление заголовка "Last-Modified" в мой http-ответ решило проблему в Chrome (у меня все еще есть некоторые проблемы в FF, но это не по теме). Однако, это все еще не решает мою проблему полностью. Почему запросы терпели неудачу в первую очередь?

1 ответ

Вы можете попробовать использовать режим инкогнито и посмотреть, что произойдет. Это может дать вам несколько советов без необходимости очищать кеш или переустанавливать Chrome.

Также взгляните на Как очистить основные детали аутентификации в Chrome

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