跳至主要内容

HTTP

注意

此页面不适用于 ClickHouse 云。此处记录的功能在 ClickHouse 云服务中不可用。有关更多信息,请参见 ClickHouse 云兼容性 指南。

HTTP 服务器可用于验证 ClickHouse 用户。HTTP 身份验证只能用作对现有用户的外部身份验证器,这些用户是在 users.xml 或本地访问控制路径中定义的。目前,支持使用 GET 方法的 Basic 身份验证方案。

HTTP 身份验证服务器定义

要定义 HTTP 身份验证服务器,您必须在 config.xml 中添加 http_authentication_servers 部分。

示例

<clickhouse>
<!- ... -->
<http_authentication_servers>
<basic_auth_server>
<uri>https://127.0.0.1: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>
</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 毫秒

users.xml 中启用 HTTP 身份验证

为了为用户启用 HTTP 身份验证,请在用户定义中指定 http_authentication 部分,而不是 password 或类似部分。

参数

  • server - 在主 config.xml 文件中配置的 HTTP 身份验证服务器的名称,如前所述。
  • 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 身份验证不能与任何其他身份验证机制一起使用。如果 http_authentication 旁边存在任何其他部分,如 password,将强制 ClickHouse 关闭。

使用 SQL 启用 HTTP 身份验证

当 ClickHouse 中启用了 SQL 驱动的访问控制和帐户管理 时,可以使用 SQL 语句创建由 HTTP 身份验证识别的用户。

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 将尝试将其键值对解析为字符串值,并将它们设置为已验证用户的当前会话的会话设置。如果解析失败,则会忽略来自服务器的响应主体。