Sobes.tech
Junior

Негизги аутентификация деген эмне (Basic Auth)?

sobes.tech AI

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).