With the 4.x branch, the vcl syntax have change significantly, rendering this post obsolete.
Now the vcl_recv block, must look like this:
if (!req.http.Authorization ~ "Basic XXXXXXXXXXXXX"){
return(synth(401, "Authentication required"));
}
Also vcl_error doesn’t exist anymore. It has been splitted into vcl_backend_error for as it name implies and vcl_synth for all “custom-made” error code. The block to add into vcl_synth look like this:
if (resp.status == 401) {
set resp.status = 401;
set resp.http.WWW-Authenticate = "Basic";
return(deliver);
}
As usual you can add your own HTML code inside this function.