HTTP
此页面不适用于 ClickHouse Cloud。本文档中的功能在 ClickHouse Cloud 服务中不可用。有关更多信息,请参阅 ClickHouse 云兼容性指南。
HTTP 服务器可用于认证 ClickHouse 用户。HTTP 认证只能作为现有用户的外部认证器使用,这些用户在 users.xml 或本地访问控制路径中定义。目前,支持使用 GET 方法的 Basic 认证方案。
HTTP 认证服务器定义
要定义 HTTP 认证服务器,必须将 http_authentication_servers 部分添加到 config.xml。
示例
请注意,您可以在 http_authentication_servers 部分使用不同的名称定义多个 HTTP 服务器。
参数
uri- 用于进行认证请求的 URI
用于与服务器通信的套接字上的毫秒级超时时间
connection_timeout_ms- 默认值:1000 毫秒。receive_timeout_ms- 默认值:1000 毫秒。send_timeout_ms- 默认值:1000 毫秒。
重试参数
max_tries- 发起认证请求的最大尝试次数。默认值:3retry_initial_backoff_ms- 重试时的初始退避间隔。默认值:50 毫秒retry_max_backoff_ms- 最大退避间隔。默认值:1000 毫秒
转发头部
本部分定义了哪些头部将从客户端请求头部转发到外部 HTTP 认证器。请注意,头部将以不区分大小写的方式与配置中的头部进行匹配,但会按原样(即未修改)转发。
在 users.xml 中启用 HTTP 认证
为了为用户启用 HTTP 认证,请在用户定义中指定 http_authentication 部分,而不是 password 或类似的部分。
参数
server- 在主config.xml文件中配置的 HTTP 认证服务器的名称,如前所述。scheme- HTTP 认证方案。现在仅支持Basic。默认值:Basic
示例(放入 users.xml)
请注意,HTTP 认证不能与其他认证机制一起使用。如果存在任何其他部分,例如 password 与 http_authentication 一起存在,将强制 ClickHouse 关闭。
使用 SQL 启用 HTTP 认证
当在 ClickHouse 中启用 SQL 驱动的访问控制和账户管理 时,可以使用 SQL 语句创建通过 HTTP 认证识别的用户。
...或者,在没有显式方案定义的情况下,Basic 是默认值
传递会话设置
如果 HTTP 认证服务器的响应体具有 JSON 格式并包含 settings 子对象,ClickHouse 将尝试将其键值对解析为字符串值,并将其设置为已认证用户当前会话的会话设置。如果解析失败,服务器的响应体将被忽略。