HAProxy获取与Basic Auth关联的用户名

时间:2016-10-06 15:36:00

标签: basic-authentication haproxy

我目前正在使用HAProxy的http-request auth操作来有条件地限制对资源的访问。我想继续将与成功授权相关联的用户名添加到传递给后端的请求的标头,模拟Apache环境变量HTTP_AUTH_USER

我可以通过http_auth_group获取与该操作相关联的组,但更愿意使用该用户名。

我很感激我可以将此操作移到Web服务器上,但是当我可以通过代理在2个位置执行此操作时,我宁愿不在10台计算机上管理少量用户名和密码。

1 个答案:

答案 0 :(得分:2)

http_auth_group layer 7 sample fetch乍一看有点令人困惑,用#34; group"出现在其中,暗示它返回该组。实际上,它将组作为其参数并且不返回任何值,除非请求已使用指定组的成员的凭据进行身份验证...在这种情况下,它将返回用户名。

因此它有两个目的:测试其真实性以确定该组的任何成员是否已对该请求进行身份验证,或提取用户名。所以......

http-request set-header X-Username %[http_auth_group(GROUP_NAME)]

...将删除传入请求中的任何X-Username:标头(不区分大小写)(如果已存在),并使用用户名填充新的X-Usernane:标头经过身份验证的用户,否则为空值(如果您的配置允许匿名请求)。

使用set-header而非 add-header非常重要,因为添加标头不会删除传入请求中的任何匹配标头,从而提供安全性风险。除非您有特定的理由要添加,否则请务必设置。