> ## 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.

> Documentação de 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>
            Sem suporte no ClickHouse Cloud
        </div>;
};

<CloudNotSupportedBadge />

<Note>
  Esta página não se aplica ao [ClickHouse Cloud](https://clickhouse.com/cloud). O recurso documentado aqui não está disponível nos serviços do ClickHouse Cloud.
  Consulte o guia [Compatibilidade com Cloud](/docs/pt-BR/products/cloud/guides/cloud-compatibility) do ClickHouse para mais informações.
</Note>

O servidor HTTP pode ser usado para autenticar usuários do ClickHouse. A autenticação HTTP só pode ser usada como autenticador externo para usuários existentes, definidos em `users.xml` ou em caminhos locais de controle de acesso. Atualmente, há suporte ao esquema de autenticação [Basic](https://datatracker.ietf.org/doc/html/rfc7617) usando o método GET.

<div id="http-auth-server-definition">
  ## Definição de servidor de autenticação HTTP
</div>

Para definir o servidor de autenticação HTTP, você deve adicionar a seção `http_authentication_servers` ao `config.xml`.

**Exemplo**

```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>

```

Observe que é possível definir vários servidores HTTP dentro da seção `http_authentication_servers` usando nomes distintos.

**Parâmetros**

* `uri` - URI para fazer a solicitação de autenticação

Timeouts, em milissegundos, no socket usado para se comunicar com o servidor:

* `connection_timeout_ms` - Padrão: 1000 ms.
* `receive_timeout_ms` - Padrão: 1000 ms.
* `send_timeout_ms` - Padrão: 1000 ms.

Parâmetros de retry:

* `max_tries` - O número máximo de tentativas para fazer uma solicitação de autenticação. Padrão: 3
* `retry_initial_backoff_ms` - O intervalo inicial de backoff em caso de retry. Padrão: 50 ms
* `retry_max_backoff_ms` - O intervalo máximo de backoff. Padrão: 1000 ms

Encaminhamento de cabeçalhos:

Esta parte define quais cabeçalhos serão encaminhados dos cabeçalhos de solicitação do cliente para o autenticador HTTP externo. Observe que os cabeçalhos serão comparados com os definidos na configuração sem diferenciar maiúsculas de minúsculas, mas serão encaminhados como estão, isto é, sem modificação.

<div id="enabling-http-auth-in-users-xml">
  ### Habilitando a autenticação HTTP em `users.xml`
</div>

Para habilitar a autenticação HTTP para o usuário, especifique a seção `http_authentication` em vez de `password` ou de seções semelhantes na definição do usuário.

Parâmetros:

* `server` - Nome do servidor de autenticação HTTP configurado no arquivo principal `config.xml`, conforme descrito anteriormente.
* `scheme` - Esquema de autenticação HTTP. No momento, há suporte apenas a `Basic`. Padrão: Basic

Exemplo (adicione em `users.xml`):

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

<Note>
  Observe que a autenticação HTTP não pode ser usada em conjunto com nenhum outro mecanismo de autenticação. A presença de qualquer outra seção, como `password`, junto com `http_authentication`, fará com que o ClickHouse seja encerrado.
</Note>

<div id="enabling-http-auth-using-sql">
  ### Habilitando a autenticação HTTP com SQL
</div>

Quando o [Controle de Acesso e Gerenciamento de Contas via SQL](/docs/pt-BR/concepts/features/security/access-rights#access-control-usage) está habilitado no ClickHouse, usuários identificados por autenticação HTTP também podem ser criados com instruções SQL.

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

...ou `Basic` é o padrão, sem definição explícita do esquema

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

<div id="passing-session-settings">
  ### Passando configurações de sessão
</div>

Se o corpo da resposta do servidor de autenticação HTTP estiver em formato JSON e contiver o subobjeto `settings`, o ClickHouse tentará interpretar seus pares chave-valor como valores do tipo string e defini-los como configurações de sessão da sessão atual do usuário autenticado. Se a análise falhar, o corpo da resposta do servidor será ignorado.
