Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

HTTP

Не поддерживается в ClickHouse Cloud

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-аутентификации с помощью 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 попытается разобрать его пары ключ-значение как строковые значения и применить их как настройки сеанса для текущего сеанса аутентифицированного пользователя. Если разбор завершится неудачно, тело ответа сервера будет проигнорировано.

Navigation