Proxy-Authenticate
Применение
Когда клиент отправляет запрос через прокси-сервер, требующий учётных данных, прокси отвечает кодом состояния 407 и включает в ответ заголовок Proxy-Authenticate. Этот заголовок сообщает клиенту, какую схему аутентификации использовать, и передаёт параметры, необходимые для формирования учётных данных.
Получив запрос на аутентификацию, клиент отправляет запрос повторно, добавив заголовок Proxy-Authorization с подходящими учётными данными. Прокси проверяет учётные данные и в случае успеха пересылает запрос серверу назначения.
Заголовок Proxy-Authenticate работает на уровне прокси. Аналогичный заголовок для аутентификации на сервере-источнике — WWW-Authenticate, который вызывает ответ 401, а не 407.
Несколько заголовков Proxy-Authenticate в одном ответе означают, что прокси принимает более одной схемы. Клиент выбирает самую надёжную схему, поддерживаемую обеими сторонами.
scheme
Значение scheme определяет метод аутентификации. Распространённые значения — Basic, Digest, Bearer и Negotiate. Полный список зарегистрированных схем ведёт IANA.
realm
Параметр realm — необязательная строка, описывающая защищаемое пространство. Клиенты обычно показывают значение realm в запросе учётных данных. Если параметр опущен, клиент по умолчанию показывает имя хоста прокси.
Параметры, зависящие от схемы
Каждая схема аутентификации определяет дополнительные параметры. Схема Digest включает nonce, qop, algorithm и opaque. Схема Bearer включает scope и error. Эти параметры указываются в значении заголовка после имени схемы.
Пример
Прокси, требующий аутентификации Basic, возвращает запрос с описательным realm. Значение realm подсказывает пользователю, какие учётные данные ожидаются.
Proxy-Authenticate: Basic realm="Corporate Proxy"
Прокси, поддерживающий схему Digest, включает сгенерированный сервером nonce для защиты от атак повторного воспроизведения.
Proxy-Authenticate: Digest realm="proxy@example.re", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", qop="auth"
Прокси, предлагающий несколько схем аутентификации, перечисляет каждую на отдельной строке. Клиент выбирает самый надёжный из поддерживаемых вариантов.
Proxy-Authenticate: Negotiate
Proxy-Authenticate: Basic realm="Internal Network"