Что означает HTTP-статус 401 Unauthorized?

«Что означает HTTP-статус 401 Unauthorized?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP 401 Unauthorized — это код состояния клиентской ошибки, который означает, что запрос не был применён, потому что ему не хватает действительных учётных данных для аутентификации. Сервер "не знает", кто такой клиент, и отказывает в доступе.

Ключевое отличие от 403 Forbidden:

  • 401 Unauthorized: "Я тебя не узнаю. Предъяви пропуск (учётные данные)."
  • 403 Forbidden: "Я тебя узнал, но у тебя нет прав на этот ресурс."

Типичные причины и сценарии:

  1. Отсутствие заголовка аутентификации: Запрос отправлен без Authorization.
  2. Неверный или просроченный токен: Переданный Bearer/JWT токен некорректен, подписан неверно или истёк.
  3. Неправильные логин/пароль при использовании Basic Auth.
  4. Попытка доступа к защищённому ресурсу без предварительного логина.

Пример запроса и ответа:

### Запрос с неверным токеном
GET /api/profile HTTP/1.1
Host: api.example.com
Authorization: Bearer expired_or_invalid_token

### Ответ сервера
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="Access to profile", error="invalid_token", error_description="The access token expired"
Content-Type: application/json

{
  "error": "Unauthorized",
  "message": "Invalid or expired authentication token"
}

Заголовок WWW-Authenticate: Сервер может отправить этот заголовок, чтобы указать клиенту схему аутентификации, которую следует использовать (например, Basic, Bearer). Это часть стандарта HTTP.

Что делать при получении 401:

  1. На стороне клиента (тестировщика/разработчика):
    • Проверить корректность формирования заголовка Authorization.
    • Убедиться, что токен активен и не истёк.
    • Выполнить запрос на обновление токена (если используется refresh token flow).
    • Перелогиниться в системе для получения новых учётных данных.
  2. На стороне сервера (если вы администрируете API):
    • Проверить конфигурацию сервера аутентификации.
    • Убедиться в правильной валидации подписи и срока действия токенов.

Тестирование: При тестировании API сценарии с неверными или отсутствующими учётными данными должны всегда возвращать 401, а не 500 или 403.