Назад к вопросам
Junior
79
questionbank

Что такое базовая аутентификация (Basic Auth)?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Базовая аутентификация - это простейший способ аутентификации клиента HTTP, определённый в стандарте RFC 7617.

Принцип работы:

  1. Клиент отправляет HTTP-запрос к защищённому ресурсу.
  2. Сервер возвращает ответ со статусом 401 Unauthorized и заголовком WWW-Authenticate: Basic realm="<realm>", где <realm> - это текстовое описание защищаемой области (ресурса).
  3. Браузер или клиентское приложение отображает диалоговое окно для ввода имени пользователя и пароля.
  4. Клиент кодирует имя пользователя и пароль в строку формата username:password.
  5. Полученная строка кодируется с помощью Base64.
  6. Клиент повторяет запрос, добавляя заголовок Authorization: Basic <base64_encoded_string>, где <base64_encoded_string> - результат кодирования Base64.
  7. Сервер декодирует строку Base64, разделяет имя пользователя и пароль и проверяет учётные данные.
  8. Если учётные данные верны, сервер отправляет запрошенный ресурс. Иначе, снова возвращает 401 Unauthorized.

Пример заголовка Authorization:

Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

где YWxhZGRpbjpvcGVuc2VzYW1l — это Base64-кодированная строка aladdin:opensesame.

Особенности:

  • Простота: Легко реализовать как на стороне клиента, так и на стороне сервера.
  • Небезопасность: Учётные данные передаются, пусть и в Base64-кодированном виде, но не шифрованно. Base64 - это кодирование, а не шифрование. При перехвате трафика данные легко декодируются. Только в связке с HTTPS она обеспечивает минимальный уровень безопасности.
  • Состояние: Не сохраняет состояние на сервере между запросами (без stateless). Каждому запросу требуется заголовок Authorization.
  • Пользовательский опыт: Браузерное диалоговое окно менее гибкое и пользовательско-дружелюбное по сравнению с кастомными формами аутентификации.

Использование: Чаще всего применяется для защиты API, статических ресурсов или в простых внутренних системах, где безопасность не является критически важной, или обязательно в сочетании с SSL/TLS (HTTPS).