В контексте транзакции HTTP базовая аутентификация доступа — это метод, с помощью которого пользовательский агент HTTP (например, веб-браузер ) предоставляет имя пользователя и пароль при выполнении запроса. При базовой аутентификации HTTP запрос содержит поле заголовка в форме Authorization: Basic <credentials>
, где <credentials>
кодировка Base64 идентификатора и пароля, соединенных одним двоеточием :
.
Первоначально он был реализован Ари Луотоненом в CERN в 1993 году [1] и определен в спецификации HTTP 1.0 в 1996 году. [2] Он указан в RFC 7617 от 2015 года, который устарел RFC 2617 от 1999 года.
Реализация базовой аутентификации HTTP (BA) — это самый простой метод обеспечения контроля доступа к веб-ресурсам, поскольку он не требует файлов cookie , идентификаторов сеансов или страниц входа; скорее, базовая аутентификация HTTP использует стандартные поля в заголовке HTTP .
Механизм BA не обеспечивает защиту конфиденциальности передаваемых учетных данных. Они просто кодируются с помощью Base64 при передаче и никаким образом не шифруются и не хэшируются . Поэтому базовая аутентификация обычно используется в сочетании с HTTPS для обеспечения конфиденциальности.
Поскольку поле BA должно отправляться в заголовке каждого HTTP-запроса, веб-браузеру необходимо кэшировать учетные данные в течение разумного периода времени, чтобы избежать постоянного запроса у пользователя имени пользователя и пароля. Политика кэширования различается в разных браузерах.
HTTP не предоставляет веб-серверу метода, позволяющего клиенту «выйти из системы» пользователя. Однако существует ряд способов очистки кэшированных учетных данных в некоторых веб-браузерах. Один из них — перенаправление пользователя на URL-адрес в том же домене с использованием намеренно неверных учетных данных. Однако такое поведение несовместимо между различными браузерами и версиями браузеров. [3] Microsoft Internet Explorer предлагает специальный метод JavaScript для очистки кэшированных учетных данных: [4]
< скрипт > документ . execCommand ( 'ClearAuthenticationCache' );</ script >
В современных браузерах кэшированные учетные данные для базовой аутентификации обычно удаляются при очистке истории посещений. Большинство браузеров позволяют пользователям специально удалять только учетные данные, хотя эту опцию может быть трудно найти, и обычно они очищают учетные данные для всех посещенных сайтов. [5] [6]
Подбор учетных данных активно не предотвращается и не обнаруживается (если не используется механизм на стороне сервера).
Когда сервер хочет, чтобы пользовательский агент аутентифицировал себя на сервере после получения неаутентифицированного запроса, он должен отправить ответ со строкой состояния HTTP 401 Unauthorized [7] и полем заголовка WWW-Authenticate . [8]
Поле заголовка WWW-Authenticate для базовой аутентификации строится следующим образом:
WWW-Authenticate: Basic realm="User Visible Realm"
Сервер может включить параметр charset из RFC 7617: [3]
WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"
Этот параметр указывает, что сервер ожидает, что клиент будет использовать UTF-8 для кодирования имени пользователя и пароля (см. ниже).
Когда пользовательский агент хочет отправить на сервер учетные данные для аутентификации, он может использовать поле заголовка авторизации .
Поле заголовка авторизации строится следующим образом: [9]
Например, если браузер использует Aladdin в качестве имени пользователя и open sesame в качестве пароля, то значением поля будет кодировка Base64 Aladdin:open sesame или QWxhZGRpbjpvcGVuIHNlc2FtZQ== . Тогда поле заголовка авторизации будет выглядеть так:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Очистить недавнюю историю->Активные входы (в деталях) используется для очистки аутентификации.
Данные, которые можно удалить[...]Пароли: Записи сохраненных вами паролей удаляются.