Hi, I'm developing an intranet application with authentication provided by Apache::AuthCookieNTLM. Tests are working perfectly for internal users (thank-you module authors) -- but the site must also be available to external users through an extranet.
The requirement here is that, where a user connects internally, the system recognises their Windows account and personalises the site accordingly. However, when an external user visits the site, they should be able to gain immediate access, and merely lack a username. Consequently, I'm hoping to be able to set up authentication such that, where NTLM (or the cookie) is available, authentication takes place, and where it isn't available, the phase merely returns OK. Here's the config I'm using to test this: PerlModule Apache::AuthenNTLM PerlModule Apache::AuthCookieNTLM PerlModule Apache::Constants PerlModule Apache::Registry <Location "/ntlm"> PerlAuthenHandler Apache::AuthCookieNTLM Apache::Constants::OK AuthType ntlm AuthName eWok require valid-user PerlAddVar ntdomain "xxxx xxxx xxxx" PerlSetVar defaultdomain xxxx PerlSetVar ntlmdebug 1 PerlSetVar ntlmsemkey 0 PerlSetVar ntlmauthoritative off PerlSetVar basicauthoritative off PerlSetVar eWokName eWokLogin SetHandler perl-script PerlHandler Apache::Registry </Location> This works great for internal requests, but I still get the normal basic authentication box appear for external requests. The debug information for a sample external request is as follows: AuthCookieNTLM - Looking for Cookie Name: eWokLogin [15002] AuthenNTLM: Config Domain = xxxx pdc = xxxx bdc = xxxx [15002] AuthenNTLM: Config Default Domain = xxxx [15002] AuthenNTLM: Config Fallback Domain = [15002] AuthenNTLM: Config AuthType = ntlm AuthName = eWok [15002] AuthenNTLM: Config Auth NTLM = 1 Auth Basic = 0 [15002] AuthenNTLM: Config NTLMAuthoritative = off BasicAuthoritative = off [15002] AuthenNTLM: Config Semaphore key = 23754 timeout = 2 [15002] AuthenNTLM: Config SplitDomainPrefix = [15002] AuthenNTLM: Authorization Header <not given> [Fri Dec 16 12:01:50 2005] [error] access to /ntlm failed for , reason: Bad/Missing NTLM/Basic Authorization Header for /ntlm As you can see, I was hoping that having Apache::Constants::OK in the stack for the AuthenHandler, setting the AuthType to "ntlm" (rather than "ntlm,basic"), and setting both NTLMAuthoritative and BasicAuthoritative to "off" would give me the effect that I wanted. I've checked that $r->can_stack_handlers returns 1. What am I missing here? Is is possible to achieve this effect without creating a wrapper around Apache::AuthCookieNTLM? If not, what might I need to override in order to achieve this? Any advice, as always, would be most gratefully received. Cheers, Andrew.