Код
#статьи

Ошибка 401 Unauthorized: что это, почему она появляется и как исправить

Инструкция для пользователей и администраторов сайтов.

Иллюстрация: Оля Ежак для Skillbox Media

Если вы переходите на сайт и он не работает, это может произойти по разным причинам. Одна из ситуаций связана с ошибкой авторизации — error 401 Unauthorized. Давайте разберёмся, что это за ошибка, почему она возникает и как её устранить.

Содержание

Что означает ошибка 401

Ошибка 401 Unauthorized означает «неавторизованный» или «несанкционированный» доступ. Она возникает, когда пользователь пытается получить доступ к защищённому ресурсу, но вводит неверные учётные данные для аутентификации. Например, когда указывает неправильный пароль при входе в личный аккаунт социальной сети.

Ошибка 401 может явно отображаться в виде сообщения или быть скрытой. При явном отображении сообщение появляется на текущей странице. На разных сайтах формулировка может различаться, и вместо текста «Ошибка 401 Unauthorized» вы можете встретить такие варианты:

  • 401 Unauthorized — «неавторизованный».
  • Authorization Required — «требуется авторизация».
  • HTTP Error 401 — «ошибка авторизации».
  • «Ошибка авторизации».
  • Access Denied — «доступ запрещён».
  • Authentication Required — «требуется аутентификация».
  • Login Failed — «ошибка входа».
  • Invalid Credentials — «неверные учётные данные».
  • Please Log In — «пожалуйста, выполните вход».
  • Authentication Error — «ошибка аутентификации».

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

Чтобы увидеть ошибку 401 в действии, воспользуемся сервисом httpstat.us. Если вы перейдёте по ссылке httpstat.us/401, браузер отобразит стандартное диалоговое окно с запросом логина и пароля. Введите любые данные: сервис их сбросит и неявно вернёт ошибку 401. То есть на странице не появится никакого предупреждающего сообщения.

Давайте воспользуемся инструментами разработчика браузера (DevTools) и проверим, что мы действительно получаем нужную ошибку:

  • Оставайтесь на странице по этой ссылке: httpstat.us/401.
  • Откройте инструменты разработчика: клавиша F12 или комбинация Ctrl + Shift + I в большинстве браузеров.
  • Перейдите на вкладку Network («Сеть»).
  • Введите логин и пароль — попробуйте получить доступ к защищённому ресурсу.
  • В списке запросов найдите сообщение с кодом 401.
  • Нажмите на него для просмотра подробной информации.
Демонстрация ошибки 401 в браузере Opera через сервис httpstat.us
Скриншот: Opera / httpstat.us / Skillbox Media

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

Ошибка 401 может возникнуть из-за некорректной авторизации пользователя, технических неполадок на стороне клиента или сервера, а также проблем с API и токенами. Рассмотрим каждую из этих категорий.

Некорректная аутентификация пользователя. Данный тип проблем обычно связан с системой безопасности и механизмами защиты от несанкционированного доступа. Основные причины возникновения:

  • Неверно введённые логин или пароль при попытке входа в систему.
  • Отсутствие прав доступа к странице. Пользователь может получить такую ошибку при попытке открыть закрытый раздел без подписки или при входе в административную панель без прав администратора.
  • Блокировка учётной записи администратором. Это может быть временная или постоянная мера, связанная с нарушением правил использования сервиса или подозрительной активностью.
  • Автоматическая блокировка IP-адреса из-за множественных неудачных попыток входа. К примеру, после пяти неуспешных попыток за 15 минут система может заблокировать доступ с этого IP на час.

Неполадки на стороне клиента. Подобные проблемы возникают из-за особенностей работы устройства или браузера пользователя.

  • Некорректное кэширование учётных данных. Браузер может хранить устаревшие данные авторизации даже после изменения пароля.
  • Проблемы с файлами cookie и пользовательской сессией. Например, в режиме инкогнито браузер может случайно заблокировать или удалять cookie-файлы, что приведёт к потере данных авторизации.
  • Проблемы с синхронизацией времени между клиентом и сервером. Если разница во времени составляет более пяти минут, система безопасности может расценить это как угрозу и заблокировать доступ. Такая ситуация часто возникает при работе с виртуальной машиной, время которой не синхронизировано с основным компьютером.
  • Устаревшие или конфликтующие расширения браузера. Особенно это касается расширений для блокировки рекламы и обеспечения безопасности — они могут блокировать важные скрипты авторизации или вмешиваться в работу с cookie-файлами.

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

  • Неверные настройки хостинг-провайдера. К таким относятся некорректная конфигурация серверов Apache или Nginx, неправильная настройка правил обработки HTTP-заголовков и ограничений на количество одновременных подключений.
  • Ненадёжные SSL/TLS-сертификаты. Проблема возникает при использовании просроченных или самоподписанных сертификатов, которые браузеры считают небезопасными.
  • Некорректная работа плагинов безопасности. Например, когда плагин двухфакторной аутентификации WordPress конфликтует с плагином защиты от брутфорс-атак. Иногда это приводим к ложным блокировкам пользователей или сбоям в процессе входа в систему.
  • Конфликты между методами аутентификации. Например, когда приложение использует OAuth 2.0 и базовую HTTP-аутентификацию. OAuth 2.0 использует для авторизации токены, а HTTP-аутентификация — логин и пароль. Это может привести к путанице в определении текущего статуса авторизации пользователя.

Проблемы с API и токенами. К этой категории относятся ошибки, возникающие при взаимодействии различных сервисов и приложений.

  • Использование устаревших токенов доступа. Например, если срок действия токена истёк спустя 24 часа, а приложение продолжает пытаться его использовать вместо запроса нового.
  • Некорректные API-запросы. Такое может происходить, когда приложение отправляет запросы с неправильным форматом данных. Например, если сервер ожидает JSON-объект, а клиент отправляет данные в формате XML или не заполняет обязательные поля.
  • Ошибки валидации временных меток в токенах аутентификации. Если время на сервере и клиенте различается, токен может быть отклонён, поскольку система посчитает его созданным в будущем.

Как исправить ошибку пользователю

В этом разделе описаны базовые шаги для решения проблемы с ошибкой 401. Рекомендуем проверять наличие каждой проблемы методом последовательного исключения: после каждого шага обновите страницу и смотрите, сохраняется ли ошибка. Если одно решение не помогло, переходите к следующему.

Проверьте корректность ввода учётных данных. Убедитесь в правильности регистра букв и языка ввода, а также в отсутствии случайных пробелов или символов в логине и пароле. Так, если у вас логин user@example.com, то ввод User@example.com вызовет ошибку.

Убедитесь, что у вас есть права доступа к запрашиваемой странице. Некоторые разделы сайта могут быть доступны только администраторам или премиум-пользователям. Поэтому попытка получить доступ с обычной учётной записи к таким разделам приведёт к ошибке.

Очистите кэш и удалите cookie-файлы из браузера, так как они могут содержать устаревшие данные аутентификации. Для этого выполните следующее:

  • Откройте настройки браузера и перейдите в раздел История или Конфиденциальность.
  • Выберите период очистки. Например, За последний час или За всё время.
  • Отметьте пункты Файлы cookie и Данные сайтов, затем очистите данные браузера.

После очистки вам придётся заново войти в аккаунты на всех сайтах. Если браузер позволяет, лучше удалить cookie только для проблемного сайта.

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

Например, если время на ПК отстаёт на 15 минут и вы пытаетесь войти в банковское приложение, система может отклонить запрос, считая токен аутентификации просроченным. Чтобы этого избежать, включите автоматическую настройку времени на устройстве. Это можно сделать на всех операционных системах: Windows, Linux, macOS, Android и iOS.

Отключите конфликтующие расширения браузера. Для этого:

  • Откройте меню расширений браузера — обычно это значок-пазл в правом верхнем углу страницы.
  • Временно отключите все расширения с помощью переключателей.
  • Обновите страницу и проверьте, исчезла ли ошибка. Если да, включайте расширения поочерёдно, чтобы найти проблемное.

Особое внимание обратите на расширения, связанные с безопасностью и блокировкой рекламы, — они чаще всего конфликтуют с авторизацией.

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

Очистите данные DNS. DNS — это система, которая преобразует понятные для человека названия сайтов в IP-адреса, используемые компьютерами. Очистка DNS-кэша помогает решить проблемы с доступом, поскольку удаляет устаревшие или повреждённые записи.

Очистку DNS нужно выполнять на уровне операционной системы, так как это системный сервис, отвечающий за преобразование доменных имён.

  • Порядок очистки DNS-кэша для Windows. Откройте командную строку от имени администратора и введите команду: ipconfig /flushdns.
  • Для macOS. Откройте терминал и введите команду: sudo killall -HUP mDNSResponder. После запроса введите пароль администратора.
  • Для Linux. Откройте терминал и введите одну из команд: sudo resolvectl flush-caches или sudo systemd-resolve --flush-caches.

После очистки DNS-кэша перезапустите браузер, чтобы изменения вступили в силу.

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

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

Если проблема сохраняется, обратитесь в техподдержку провайдера с описанием проблемы. Укажите методы решения, которые вы испробовали, и приложите скриншот получаемой ошибки.

Как исправить ошибку администратору сайта

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

Диагностика на стороне сервера начинается с проверки доступа к проблемным страницам через разные устройства и браузеры. Сначала протестируйте сайт на компьютере в Chrome, Firefox и Safari, а затем на смартфоне и планшете. Если сайт корректно работает хотя бы в одном браузере или на другом устройстве — скорее всего, проблема в вашем основном браузере. В таком случае достаточно очистить кэш и cookie.

Если ошибка появляется на всех устройствах и во всех браузерах, следует обратиться в службу поддержки хостинга:

  • Предоставьте скриншоты ошибок и логи сервера.
  • Укажите, когда именно появилась проблема.
  • Опишите, какие действия предшествовали появлению ошибки.

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

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

  • Проверьте настройки веб-сервера в конфигурационных файлах Apache (.htaccess и httpd.conf). Эти файлы содержат правила доступа и параметры авторизации, определяющие доступность разделов сайта. Руководство: Authentication and Authorization.
  • Проверьте настройки безопасности и параметры сессий в файле конфигурации PHP (php.ini). Особое внимание уделите параметрам session.gc_maxlifetime (время жизни сессии) и session.cookie_lifetime (время хранения cookie) — они определяют, как долго пользователь может оставаться авторизованным на сайте без повторного входа. Документация: PHP Session Configuration.
  • Проверьте настройку файрвола и правила .htaccess для контроля доступа, а также выполните верификацию SSL-сертификатов и их актуальность. Не забудьте также провести аудит прав доступа к файлам и их владельцев (через команды chmod и chown). Подробнее о настройках безопасности читайте в документации Apache: Security Tips.

Проверка журналов ошибок и логов. После проверки конфигурации сервера следует проанализировать журналы Apache — error.log и access.log. В этих журналах можно обнаружить ошибки авторизации. Кроме того, необходимо изучить системные логи для выявления проблем с правами доступа. Документация по работе с логами: Log Files.

Мониторинг сетевого трафика. Если проблема не обнаружена в логах, выполните анализ сетевых запросов. Убедитесь в корректности передачи заголовков авторизации и отсутствии блокировок трафика на уровне сети. Для этого подойдёт Wireshark и аналогичные инструменты. Подробнее о мониторинге трафика читайте в документации Wireshark.

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

Инструменты и сервисы для тестирования системы авторизации:

  • Burp Suite — это инструмент для мониторинга обмена данными между браузером и сервером во время аутентификации. Он помогает выявлять различные уязвимости в системе безопасности, такие как незащищённая передача паролей или некорректная обработка сессий.
  • OWASP ZAP — это сканер веб-приложений для поиска слабых мест в системе авторизации. Он может обнаружить отсутствие защиты от перебора паролей и выявить небезопасную передачу учётных данных. Также он определяет уязвимости типа XSS и SQL-инъекций, через которые злоумышленники могут обходить систему авторизации.
  • Selenium — это инструмент для автоматизированного тестирования авторизации и проверки прав доступа. Он позволяет имитировать вход пользователей с разными ролями (администратор, модератор или обычный пользователь), проверять доступность защищённых разделов сайта, а также работу форм входа и восстановления пароля.
  • Postman — это платформа для тестирования API, обеспечивающего аутентификацию, и проверки работы токенов. Она позволяет отправлять запросы к API с разными токенами и анализировать ответы сервера. Так можно проверить, правильно ли создаются и обновляются токены, корректно ли сервер проверяет срок их действия и как API обрабатывает недействительные или просроченные токены.

Дополнительные проверки. Если после аудита системы авторизации ошибка 401 сохраняется, попробуйте выполнить следующие действия:

  • Проверьте состояние кэша. Неправильная работа кэша может вызывать проблемы с авторизацией из-за устаревших данных сессий. Инструменты: Redis CLI или phpRedisAdmin.
  • Проведите сканирование на вредоносный код. Он может перехватывать авторизационные данные или создавать бэкдоры. Подходящие утилиты: ClamAV, Malwarebytes или VirusTotal.
  • Проверьте работу плагинов и модулей авторизации. Конфликты между плагинами часто вызывают проблемы с авторизацией. Чтобы найти проблемный плагин, отключайте их по одному, используя инструменты Debug Bar или Query Monitor.
  • Обновите компоненты системы авторизации. Устаревшие версии часто содержат уязвимости, которые ставят под угрозу безопасность сайта и создают проблемы при авторизации. Инструменты для проверки версий: Composer Version Check и WP-CLI.

Если проверки не помогли — попробуйте обратиться к разработчикам CMS или фреймворка, на котором работает ваш сайт. Возможно, они помогут выявить причину ошибки 401 или предложат готовое решение.

Вы также можете привлечь стороннего специалиста для аудита системы или откатить сайт к последней стабильной версии из резервной копии.

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

Что дальше

Если все перечисленные способы не работают, попробуйте найти решение в технической документации. Вот полезные ресурсы по ошибке 401:

  • MDN Web Docs: HTTP 401 Unauthorized — подробное описание ошибки и объяснение её причин.
  • OAuth 2.0 — документация по протоколу авторизации, который часто вызывает ошибки 401.
  • RFC 7235 — спецификация HTTP-аутентификации, которая описывает механизмы безопасности и способы обработки ошибки 401.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Старт в DevOps: системное администрирова­ние для начинающих Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована