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