Hi, I have an issue with Apache2::AuthenNTLM and mod_rewrite, and seems that nobody else is having this problem. Maybe I missed something very simple, or maybe nobody else is doing this (wich I doubt).
Let's see if I can explain the problem. Our environment is like this: - Debian Etch - Apache 2 (2.2.3-4) - Perl 5.8.8-7 - libapachache2-mod-perl2 - Domain controler uses Windows 2003 Server We have a <Location /> in Apache that require NTLM authentication for all content in Apache using Apache2::AuthenNTLM. Everything works fine for content under DocumentRoot, but we also use some RewriteRules to serve content from a Tomcat app server, and when the rewrite applies, Apache returns a "401 Authorization Required" error. For example, typing these urls in a browser (server is 10.9.133.0) http://10.9.133.0 (File /var/www/index.html) <--- Works fine http://10.9.133.0/example/index.html (File /var/www/example/index.html ) <--- Also fine But with content under "test" wich is rewrited using this rule: RewriteRule ^/test(.*) http://10.9.133.0:9673/$1 [P,L] If you ask for (test is a valid python script in the Tomcat server): http://10.9.133.0/test/test (File http://10.9.133.0:9673/test ) <-- 401 error Those rewrites works fine if you already have a valid authentication (requesting the home with the browser first, for example), but this means that we cannot make a direct link to any file in the rewrited content, because you get the 401 error without the server even asking for username/password. This is the apache error log of the failed request. [20330] AuthenNTLM: Start NTLM Authen handler pid = 20330, connection = 139690552 conn_http_hdr = keep-alive main = cuser = remote_ip = 10.9.236.124 remote_port = 13872 remote_host = <> version = 0.02 smbhandle = [20330] AuthenNTLM: Setup new object [20330] AuthenNTLM: Config Domain = dom_csd1 pdc = sdc1 bdc = [20330] AuthenNTLM: Config Default Domain = Dom_csd1 [20330] AuthenNTLM: Config Fallback Domain = [20330] AuthenNTLM: Config AuthType = basic,ntlm AuthName = Autenticacion bajo NTLM [20330] AuthenNTLM: Config Auth NTLM = 1 Auth Basic = 1 [20330] AuthenNTLM: Config NTLMAuthoritative = on BasicAuthoritative = on [20330] AuthenNTLM: Config Semaphore key = 23754 timeout = 1 [20330] AuthenNTLM: Config SplitDomainPrefix = 1 [20330] AuthenNTLM: Authorization Header <not given> [Tue Jun 12 12:15:09 2007] [error] Bad/Missing NTLM/Basic Authorization Header for /test/test At this point the browser ( both Firefox and IE 6.0) is showing the 401 error. A while after the log shows again: [20332] AuthenNTLM: Start NTLM Authen handler pid = 20332, connection = 138433448 conn_http_hdr = main = cuser = remote_ip = 127.0.0.1 remote_port = 13362 remote_host = <> version = 0.02 smbhandle = [20332] AuthenNTLM: Setup new object [20332] AuthenNTLM: Config Domain = dom_csd1 pdc = sdc1 bdc = [20332] AuthenNTLM: Config Default Domain = Dom_csd1 [20332] AuthenNTLM: Config Fallback Domain = [20332] AuthenNTLM: Config AuthType = basic,ntlm AuthName = Autenticacion bajo NTLM [20332] AuthenNTLM: Config Auth NTLM = 1 Auth Basic = 1 [20332] AuthenNTLM: Config NTLMAuthoritative = on BasicAuthoritative = on [20332] AuthenNTLM: Config Semaphore key = 23754 timeout = 1 [20332] AuthenNTLM: Config SplitDomainPrefix = 1 [20332] AuthenNTLM: Authorization Header <not given> [Tue Jun 12 12:17:54 2007] [error] Bad/Missing NTLM/Basic Authorization Header for / Those logs are exactly the same as when you request any other page and click Cancel when the browser ask for password. This is the apache config file we're using: <VirtualHost *:80> RequestHeader set REMOTE_USER "%{REMOTE_USER}s" DocumentRoot /var/www/ ServerName 10.9.133.0 KeepAlive On <Location /> PerlAuthenHandler Apache2::AuthenNTLM AuthName "Autenticacion bajo NTLM" AuthType basic,ntlm PerlAddVar ntdomain "Dom_csd1 sdc1" PerlSetVar defaultdomain Dom_csd1 PerlSetVar ntlmdebug 1 PerlSetVar splitdomainprefix 1 PerlSetVar ntlmsemtimeout 1 PerlSetVar ntlmauthoritative on PerlSetVar basicauthoritative on require valid-user </Location> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On <IfModule mod_rewrite.c> RewriteEngine On RewriteLogLevel 3 RewriteLog /var/log/apache2/rewrite.log ### Content running in Tomcat RewriteRule ^/test(.*) http://10.9.133.0:9673/$1 [P,L] </IfModule> </VirtualHost> Any ideas? Why everything is working fine except the rewrite rules? Why the browser dont even ask for credentials? Hope someone could help, cause this is driving me crazy. Thanks -- First they ignore you... Then they laugh at you... Then they fight you... Then you win Mohandas Ghandi Use Linux