ICAP 服务可以接收 Squid 已知的已认证身份,但双方必须就这一身份如何传递达成一致。仅命名一个标头并不能启用用户名转发。

对于已启用 ICAP 支持和客户端认证的现有 Squid 7 环境,相关设置可以是:

adaptation_send_username on
icap_client_username_header X-Authenticated-User
icap_client_username_encode off

这是对现有 ICAP 服务、适配规则和代理访问配置的补充。它不会创建认证或适配服务。

匹配服务的输入

Squid 的默认用户名标头是 X-Client-Username。如果适配器期望 X-Authenticated-User,请如上所述更改 Squid 配置的名称,或将适配器配置为读取默认值。标头名称的匹配遵循 HTTP 不区分大小写的规则。

编码也必须一致。启用 icap_client_username_encode 后,Squid 会用 Base64 编码该值。服务需要解码这种表示,而不是把它当作另一个用户名。

这是 Squid 与其服务之间 ICAP 交换的元数据。它不是要求向每个目标网站发送用户身份标头的指令。

如果服务仍报告 IP 地址

确认事务在 Squid 处确实具有已认证的用户名、用户名转发已启用,并且服务会读取所配置的标头。适配器回退到客户端地址并不能证明 Squid 认证失败;交接本身可能缺失或名称有误。

仅在 Squid 到适配器之间的受控路径上将此身份视为可信。这些指令因版本而异:配置参考为 Squid 7 及更早版本列出了它们,并标明它们在 Squid 8 中不可用。

相关文章