I originally talked about proxy authentication in Section 18.104.22.168. However, I only explained how to write access control rules that use proxy authentication. Here, I'll show you how to select and configure the particular authentication helpers.
Recall that Squid supports three methods for gathering authentication credentials from users: Basic, Digest, and NTLM. These methods specify how Squid receives the username and password from a client. From a security standpoint, Basic authentication is extremely weak. Digest and NTLM are significantly stronger. For each method, Squid provides some authentication modules, or helper processes, which actually validate the credentials.
All of the authentication helpers that I mention here are included in the Squid source code distribution. You can compile them with ./configure options that match their directory names. For example:
% ls helpers/basic_auth LDAP NCSA getpwnam MSNT PAM multi-domain-NTLM Makefile SASL winbind Makefile.am SMB Makefile.in YP % ./configure --enable-basic-auth-helpers=LDAP,NCSA ...
Helper programs are normally installed in the $prefix/libexec directory.
As with redirectors, Squid uses a pool of authentication helper processes. A request for authentication is sent to the first idle helper. When all authenticator processes are busy, Squid queues pending requests. If the queue becomes too large, Squid exits with a fatal error message. In most cases, Squid caches authentication results. This reduces the load on the helper processes and improves response time.