Varnish 4 Basic Authentication不断提示输入用户名和密码

时间:2016-05-09 08:19:31

标签: varnish varnish-vcl varnish-4

我在测试环境中使用Varnish 4并希望使用基本身份验证保护对内容的访问。

我想要发生的是第一个请求导致Basic Auth的提示,然后一旦用户输入了他们的用户名和密码就不再询问。我已经设置了一个Varnish规则来检查正确的Authroization,并要求用户提供它,如果他们没有。

我的最终用户抱怨他们在浏览器中反复询问基本身份验证详细信息,有时必须在显示第一页之前输入20次。

使用Chrome浏览器时,除非我打开开发工具面板并且打开开启工具面板时不要缓存请求,否则这似乎不会发生。在各种版本的IE中,这种情况一直都在发生。

在我的VCL中,基本身份验证规则在sub vcl_recv部分中如下所示:

if (!req.http.Authorization ~ "Basic xxxxxxxxxxxxxxxxxx=="
    # Don't require auth if IP on the authpass list.
    && !client.ip ~ authpass
    # Don't require auth if this is the live website.
    && !req.http.Host == "www.mylivesite.com") {
    return(synth(401, "Authentication required"));
}
unset req.http.Authorization;

1 个答案:

答案 0 :(得分:1)

我认为你在vcl_synth中遗漏了这个:

sub vcl_synth {
   if (resp.status == 401) {
   set resp.status = 401;
   set resp.http.WWW-Authenticate = "Basic";
   return(deliver);
}

检查detailed有关在Varnish中设置基本身份验证的答案。