Перейти к основному содержанию
Эта страница не применима к ClickHouse Cloud. Описанная здесь возможность недоступна в сервисах ClickHouse Cloud. Дополнительные сведения см. в руководстве ClickHouse Cloud Compatibility.
HTTP-сервер можно использовать для аутентификации пользователей ClickHouse. HTTP-аутентификацию можно использовать только как внешний аутентификатор для существующих пользователей, заданных в users.xml или в локальных путях управления доступом. В настоящее время поддерживается схема аутентификации Basic с использованием метода GET.

Определение сервера HTTP-аутентификации

Чтобы задать сервер HTTP-аутентификации, необходимо добавить раздел http_authentication_servers в config.xml. Пример
<clickhouse>
    <!- ... -->
    <http_authentication_servers>
        <basic_auth_server>
          <uri>http://localhost:8000/auth</uri>
          <connection_timeout_ms>1000</connection_timeout_ms>
          <receive_timeout_ms>1000</receive_timeout_ms>
          <send_timeout_ms>1000</send_timeout_ms>
          <max_tries>3</max_tries>
          <retry_initial_backoff_ms>50</retry_initial_backoff_ms>
          <retry_max_backoff_ms>1000</retry_max_backoff_ms>
          <forward_headers>
            <name>Custom-Auth-Header-1</name>
            <name>Custom-Auth-Header-2</name>
          </forward_headers>

        </basic_auth_server>
    </http_authentication_servers>
</clickhouse>

Обратите внимание, что в разделе http_authentication_servers можно определить несколько HTTP-серверов, задав для них разные имена. Параметры
  • uri - URI для отправки запроса аутентификации
Тайм-ауты в миллисекундах для сокета, используемого для связи с сервером:
  • connection_timeout_ms - По умолчанию: 1000 мс.
  • receive_timeout_ms - По умолчанию: 1000 мс.
  • send_timeout_ms - По умолчанию: 1000 мс.
Параметры повторных попыток:
  • max_tries - Максимальное количество попыток отправить запрос аутентификации. По умолчанию: 3
  • retry_initial_backoff_ms - Начальный интервал задержки между повторными попытками. По умолчанию: 50 мс
  • retry_max_backoff_ms - Максимальный интервал задержки. По умолчанию: 1000 мс
Пересылаемые заголовки: В этом разделе определяется, какие заголовки из клиентского запроса будут пересылаться внешнему HTTP-аутентификатору. Обратите внимание, что заголовки сопоставляются с указанными в конфигурации регистронезависимым способом, но пересылаются как есть, то есть без изменений.

Включение HTTP-аутентификации в users.xml

Чтобы включить HTTP-аутентификацию для пользователя, укажите в определении пользователя раздел http_authentication вместо password или аналогичных разделов. Параметры:
  • server - Имя сервера HTTP-аутентификации, настроенного в основном файле config.xml, как описано выше.
  • scheme - Схема HTTP-аутентификации. В настоящее время поддерживается только Basic. По умолчанию: Basic
Пример (добавляется в users.xml):
<clickhouse>
    <!- ... -->
    <my_user>
        <!- ... -->
        <http_authentication>
            <server>basic_server</server>
            <scheme>basic</scheme>
        </http_authentication>
    </test_user_2>
</clickhouse>
Обратите внимание: HTTP-аутентификацию нельзя использовать вместе с любым другим механизмом аутентификации. Наличие любых других секций, например password, наряду с http_authentication приведёт к остановке ClickHouse.

Включение HTTP-аутентификации с помощью SQL

Если в ClickHouse включена система управления доступом и учётными записями, пользователи, проходящие HTTP-аутентификацию, также могут создаваться с помощью команд SQL.
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'
…или Basic используется по умолчанию, если схема явно не указана
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'

Передача настроек сеанса

Если тело ответа сервера HTTP-аутентификации имеет формат JSON и содержит вложенный объект settings, ClickHouse попытается разобрать его пары ключ-значение как строковые значения и применить их как настройки сеанса для текущего сеанса аутентифицированного пользователя. Если разбор завершится неудачно, тело ответа сервера будет проигнорировано.
Последнее изменение 10 июня 2026 г.