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: 3retry_initial_backoff_ms- O intervalo inicial de backoff em caso de retry. Padrão: 50 msretry_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 principalconfig.xml, conforme descrito anteriormente.scheme- Esquema de autenticação HTTP. No momento, há suporte apenas aBasic. 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.