Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

HTTP

Sem suporte no ClickHouse Cloud

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 usando o método GET.

Definição de servidor de autenticação HTTP

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

Exemplo

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

Habilitando a autenticação HTTP em users.xml

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):

<clickhouse>
    <!- ... -->
    <my_user>
        <!- ... -->
        <http_authentication>
            <server>basic_server</server>
            <scheme>basic</scheme>
        </http_authentication>
    </test_user_2>
</clickhouse>

Habilitando a autenticação HTTP com SQL

Quando o Controle de Acesso e Gerenciamento de Contas via SQL está habilitado no ClickHouse, usuários identificados por autenticação HTTP também podem ser criados com instruções SQL.

CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'

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

CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'

Passando configurações de sessão

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.

Navigation