Базовая аутентификация доступа - Basic access authentication

В контексте транзакции HTTP базовая аутентификация доступа - это метод, с помощью которого пользовательский агент HTTP (например, веб-браузер ) предоставляет имя пользователя и пароль при выполнении запроса. При базовой HTTP-аутентификации запрос содержит поле заголовка в форме Authorization: Basic <credentials>, где учетные данные представляют собой кодировку Base64 идентификатора и пароля, соединенные одним двоеточием :.

Он указан в RFC  7617 от 2015 г., который отменяет RFC  2617 от 1999 г.

Функции

Реализация базовой аутентификации HTTP (BA) - это простейший метод обеспечения контроля доступа к веб-ресурсам, поскольку он не требует файлов cookie , идентификаторов сеансов или страниц входа в систему; скорее, обычная HTTP-аутентификация использует стандартные поля в HTTP-заголовке .

Безопасность

Механизм BA не обеспечивает защиту конфиденциальности передаваемых учетных данных. Они просто закодированные с Base64 в пути и не зашифрованы или хэшируются каким - либо образом. Поэтому базовая аутентификация обычно используется вместе с HTTPS для обеспечения конфиденциальности.

Поскольку поле BA должно быть отправлено в заголовке каждого HTTP-запроса, веб-браузеру необходимо кэшировать учетные данные в течение разумного периода времени, чтобы избежать постоянного запроса пользователя на ввод имени пользователя и пароля. Политика кеширования различается в зависимости от браузера.

HTTP не предоставляет веб-серверу метод, позволяющий клиенту «выйти из системы». Однако существует ряд методов для очистки кешированных учетных данных в определенных веб-браузерах. Один из них - перенаправление пользователя на URL-адрес в том же домене с использованием намеренно неверных учетных данных. Однако такое поведение несовместимо между различными браузерами и версиями браузеров. Microsoft Internet Explorer предлагает специальный метод JavaScript для очистки кэшированных учетных данных:

<script>document.execCommand('ClearAuthenticationCache');</script>

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

Протокол

Сторона сервера

Когда сервер хочет, чтобы пользовательский агент аутентифицировал себя по отношению к серверу после получения неаутентифицированного запроса, он должен отправить ответ со строкой состояния HTTP 401 Unauthorized и полем заголовка WWW-Authenticate .

WWW-Authenticate поле заголовка для базовой аутентификации строится следующим образом :

WWW-Authenticate: Basic realm="User Visible Realm"

Сервер может выбрать включение параметра кодировки из RFC  7617 :

WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"

Этот параметр указывает, что сервер ожидает, что клиент будет использовать UTF-8 для кодирования имени пользователя и пароля (см. Ниже).

Сторона клиента

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

Поле заголовка авторизации построено следующим образом:

  1. Имя пользователя и пароль объединяются одним двоеточием (:). Это означает, что само имя пользователя не может содержать двоеточие.
  2. Результирующая строка кодируется в последовательность октетов. Набор символов, используемый для этой кодировки, по умолчанию не указан, если он совместим с US-ASCII, но сервер может предложить использовать UTF-8, отправив параметр charset .
  3. Результирующая строка кодируется с использованием варианта Base64 (+ / и с заполнением).
  4. Затем к закодированной строке добавляется метод авторизации и пробел (например, «Базовый»).

Например, если браузер использует Aladdin в качестве имени пользователя и open sesame в качестве пароля, то значение поля - это кодировка Base64 для Aladdin: open sesame или QWxhZGRpbjpvcGVuIHNlc2FtZQ == . Тогда поле заголовка авторизации будет выглядеть так:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Смотрите также

Ссылки и примечания

внешние ссылки