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