Overview Description: No WWW-Authenticate header is returned when access to a URI indicated in the "Destination:" header of a request fails authentication. Steps to Reproduce: 1. Try copying a file from a normal area to a password-protected area without supplying any authentication information (I used http://test.webdav.org/dav as my normal area, and http://test.webdav.org/auth-basic as my password-protected area). Note: "normal area" refers to an area not requiring authorization. Actual Results: The copy failed and a "401 Unauthorized" message was returned from the server. However, the "401 Unauthorized" message did not contain a "WWW-Authenticate" header as the HTTP/1.1 specs mention it should. Expected Results: The copy should fail and a "401 Unauthorized" message should be returned from the server containing a "WWW-Authenticate" header. The HTTP/1.1 specs mention that this header *must* be included in a 401 response. Build Date & Platform: Apache/2.0.41-dev (Unix) DAV/2 SVN/0.14.2 (dev build) The server is running the mod_dav and mod_dav_fs modules. Additional Builds and Platforms: It has been mentioned that this problem occurs with Apache 1.3/mod_dav 1.0. Additional Information: This also occurs on a MOVE (or any request with a "Destination" URI requiring Authorization). From the dav-dev mailing list: "...the 401 is being generated in an Apache "subrequest", but the WWW-Auth header is not being promoted to the "real" request, so it gets lost..."
It would certainly be helpful if you could try this with a more recent version of apache. 2.0.41-dev is quite old.
No response from submitter. Assuming issue is resolved.
This is a real bug, there's a fix in the mod_dav 1.0 tree which can be ported over.
I suspect that the fix below is what is needed. I haven't found the mod_dav 1.0 change yet, but I found this change entry: "if a lock fails due to authentication problems, return a 403 (Forbidden) rather than 401 (Unauthorized). this fixes an HTTP conformance issue where we returned 401 but no WWW-Authenticate response header. (Joe Orton)" I'm guessing this is Joe's fix... patch to 2.0's mod_dav: Index: util.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/dav/main/util.c,v retrieving revision 1.48 diff -u -r1.48 util.c --- util.c 22 Apr 2003 21:52:46 -0000 1.48 +++ util.c 11 Nov 2003 21:30:58 -0000 @@ -1212,7 +1212,7 @@ "\" submitted a locktoken created " "by user \"", lock->auth_user, "\".", NULL); - return dav_new_error(p, HTTP_UNAUTHORIZED, 0, errmsg); + return dav_new_error(p, HTTP_FORBIDDEN, 0, errmsg); } /*
The fix I used was to copy over the www-auth header from the subrequest to the main request, I can dig it out...
Committed to HEAD, proposed to backport to 2.0: http://cvs.apache.org/viewcvs/httpd-2.0/modules/dav/main/mod_dav.c.diff?r1=1.100&r2=1.101 Thanks for the report.