Зарегистрируйтесь, чтобы продолжить обучение

Базовая аутентификация Протокол HTTP

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

Базовая аутентификация

Базовая аутентификация, выглядит как окошко браузера запрашивающее логин и пароль при входе на сайт или какой-то из его разделов. Возможно вы даже сталкивались с таким запросом в интернете (пример).

Окно базовой аутентификации

Базовая аутентификация настраивается на серверной стороне, либо внутри приложения (сайта), либо внутри веб-сервера, например Nginx. Для этого указывается конкретная пара логин/пароль для определенного пути в браузере. Пример с Nginx ниже:

server {
    listen 80;
    server_name hexlet.io;

    # Путь для которого включается базовая аутентификация
    location /secret-path/ {
        # Сообщение, которое будет отображаться в диалоговом окне аутентификации
        auth_basic "Секретная зона";
        # Путь до файла в котором хранятся логин и закодированный пароль
        auth_basic_user_file /etc/nginx/.htpasswd;

        # Остальная конфигурация
        proxy_pass http://backend_server;
    }
}

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

https://username:password@hexlet.io/secret-path

Если логин и пароль были переданы и они совпали с теми, что указаны на сервере, то запрос пройдет. Если они не совпали или не были переданы, то сервер возвращает код ответа: HTTP 401 Unauthorized. Ответ может сопровождаться заголовком WWW-Authenticate, указывающему клиенту на запрос логина и пароля. Именно поэтому браузер показывает окошко для ввода данных.

Схема работы базовой аутентификации

Логин и пароль, указанные в модальном окне, передаются на сервер в виде заголовка с закодированным сообщением:

GET /secret-path/ HTTP/1.1
Host: hexlet.io
Authorization: Basic aHR0cHdhdGNoOmY=

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


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

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

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 6 февраля
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 6 февраля
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 6 февраля
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 6 февраля
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 6 февраля
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 6 февраля
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 6 февраля
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 6 февраля

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

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