> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по HTTP

# HTTP

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Не поддерживается в ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

<Note>
  Эта страница не применима к [ClickHouse Cloud](https://clickhouse.com/cloud). Описанная здесь возможность недоступна в сервисах ClickHouse Cloud.
  Дополнительные сведения см. в руководстве ClickHouse [Cloud Compatibility](/docs/ru/products/cloud/guides/cloud-compatibility).
</Note>

HTTP-сервер можно использовать для аутентификации пользователей ClickHouse. HTTP-аутентификацию можно использовать только как внешний аутентификатор для существующих пользователей, заданных в `users.xml` или в локальных путях управления доступом. В настоящее время поддерживается схема аутентификации [Basic](https://datatracker.ietf.org/doc/html/rfc7617) с использованием метода GET.

<div id="http-auth-server-definition">
  ## Определение сервера HTTP-аутентификации
</div>

Чтобы задать сервер HTTP-аутентификации, необходимо добавить раздел `http_authentication_servers` в `config.xml`.

**Пример**

```xml theme={null}
<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-аутентификатору. Обратите внимание, что заголовки сопоставляются с указанными в конфигурации регистронезависимым способом, но пересылаются как есть, то есть без изменений.

<div id="enabling-http-auth-in-users-xml">
  ### Включение HTTP-аутентификации в `users.xml`
</div>

Чтобы включить HTTP-аутентификацию для пользователя, укажите в определении пользователя раздел `http_authentication` вместо `password` или аналогичных разделов.

Параметры:

* `server` - Имя сервера HTTP-аутентификации, настроенного в основном файле `config.xml`, как описано выше.
* `scheme` - Схема HTTP-аутентификации. В настоящее время поддерживается только `Basic`. По умолчанию: Basic

Пример (добавляется в `users.xml`):

```xml theme={null}
<clickhouse>
    <!- ... -->
    <my_user>
        <!- ... -->
        <http_authentication>
            <server>basic_server</server>
            <scheme>basic</scheme>
        </http_authentication>
    </test_user_2>
</clickhouse>
```

<Note>
  Обратите внимание: HTTP-аутентификацию нельзя использовать вместе с любым другим механизмом аутентификации. Наличие любых других секций, например `password`, наряду с `http_authentication` приведёт к остановке ClickHouse.
</Note>

<div id="enabling-http-auth-using-sql">
  ### Включение HTTP-аутентификации с помощью SQL
</div>

Если в ClickHouse включена [система управления доступом и учётными записями](/docs/ru/concepts/features/security/access-rights#access-control-usage), пользователи, проходящие HTTP-аутентификацию, также могут создаваться с помощью команд SQL.

```sql theme={null}
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'
```

...или `Basic` используется по умолчанию, если схема явно не указана

```sql theme={null}
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'
```

<div id="passing-session-settings">
  ### Передача настроек сеанса
</div>

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