I need to know the AuthFlags setting in all the vdirs and URLs (if you used
This posting is provided "AS IS" with no warranties, and confers no rights.
"AWillemsen" <AWillemsen@discussions.microsoft.com> wrote in message
news:42D3D5A7-899A-4AAF-B519-E07528227588@microsoft.com...
> David - Many thanks for your continued interest - it is appreciated.
>
> I think I have got to the bottom of the problem. Apologies this is a long
> message.
>
> I have tried removing the pwsdata and ASP.Net ISAPI filters, and this
> makes
> no difference.
>
> I have verified that the method of execution of the CGI - GET form, POST
> form, or directly in the browser address - also makes no difference.
>
> The two virtual directories do make a difference, as follows (each of the
> following tests was performed in a new browser window):
>
> 1) Display HTML page in directory A (browser asks for credentials),
> execute
> CGI in directory B - failure (CGI reports AUTH_TYPE and AUTH_USER, but no
> HTTP_AUTHORIZATION).
>
> 2) Display HTML page in directory B (browser asks for credentials),
> execute
> CGI in directory B - success
>
> 3) Execute CGI in directory B directly from browser (browser asks for
> credentials) - success
>
> 4) And most strangely, display HTML page in directory B (browser asks for
> credentials), execute CGI in directory A - success
>
> Given the unexpected outcome of test 4, I looked at the differences
> between
> directories A and B. The IIS virtual directory configurations are
> identical,
> the NTFS permissions on the physical directories are identical, and the
> physical directories exist side-by-side on the same drive. I then noticed
> that a couple of images that are present in directory A are missing from
> directory B. These images are used by the HTML page that I am displaying
> in
> the tests, so I copied them from A to B. Now test 4 fails too. In fact,
> it
> fails if just one of the images is present - only if both are missing does
> the test succeed.
>
> Now, I am even more confused than I was at the start. How can the
> successful retrieval of an image when displaying an HTML page affect the
> following execution of a CGI? I just don't understand, but that is what I
> am
> seeing.....
>
> So, I continued digging.
>
> 1) If both images are referenced in the HTML page and both images exist,
> then the 3rd execution of the CGI succeeds
>
> 2) If both images are referenced in the HTML page but only one image
> exists
> (it doesn't matter which one), then the 2nd execution of the CGI succeeds
>
> 3) If both images are referenced in the HTML page and neither image
> exists,
> then the 1st execution of the CGI succeeds
>
> I tried changing the number of images referenced in the HTML page, and
> referencing more than two made no difference (i.e. the behaviour was the
> same
> as with two). Referencing just one image led to the same behaviour as
> point
> 2 above (i.e. if the image exists then the 2nd execution succeeds).
> Referencing no images again led to the same behaviour as point 2 (i.e. the
> 2nd execution of the CGI succeeds).
>
> For your information - all the above testing was done with IE6, and I
> entered my credentials every time (i.e. I didn't ask IE to save my
> details).
>
> At this point I began suspecting my problem might have something to do
> with
> keep-alive connections, so I switched from using a browser, as follows:
>
> 1) The first alternative I used was some in-house software which has the
> ability to retrieve from HTTP servers but does not use keep-alive
> connections. I set up a configuration to retrieve the HTML page and then
> execute the CGI, and success. (Note that this was different behaviour
> than
> what I saw in the browser.)
>
> 2) Next I tried Wfetch, and again success.
>
> 3) Then I tried Firefox, and it failed.
>
> 4) Finally, I switched off keep-alive connections in Firefox, and
> success!
>
> Unfortunately, I do not know how to switch off keep-alive connections in
> IE,
> if indeed it is possible, so I cannot test IE.
>
> However, I think I can conclude that if using keep-alive connections is
> somehow causing IIS to not send the HTTP_AUTHORIZATION variable. I have
> also
> shown that, to a certain extent, the number of items retrieved over a
> keep-alive connection affects the number of times the HTTP_AUTHORIZATION
> variable is missing.
>
> You should be able to reproduce the problem by creating an HTML page that
> contains both a form and references to two images in the same directory as
> the HTML page. The form action points to a second directory. Then use IE
> to
> display the HTML page (supply credentials) and then submit the form. I
> would
> be more than happy to send you my HTML page, images and CGI if required.
>
> Thanks,
>
> Andrew
>
>
>
> "David Wang [Msft]" wrote:
>
>> Well, let's see what we have here. You say:
>> 1. your configuration is correct
>> 2. you are fairly certain it is not the network nor proxy
>> 3. it is not the application because it works fine on Apache
>> 4. there are no custom ISAPI DLLs installed
>> --> So the issue must be an IIS bug
>>
>> I say:
>> 1. Given your repro steps, I cannot reproduce it
>> 2. Given your observations, it does not make sense with any Basic/NTLM
>> authentication sequence. IIS cannot derive AUTH_TYPE and AUTH_USER
>> without
>> HTTP_AUTHORIZATION.
>> 3. My XP Pro does not have pwsdata nor ASP.Net 2.0 ISAPI Filters
>> --> I think there is misconfiguration or custom code running somewhere
>>
>> I'm pretty certain the form, POST, and two virtual directories are not
>> relevant to the issue, but you can verify. You should be able to
>> reproduce
>> this in your setup by directly accessing the CGI EXE a couple of timems.
>>
>> --
>> //David
>> IIS
>>
http://blogs.msdn.com/David.Wang >> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>> //
>>
>> "AWillemsen" <AWillemsen@discussions.microsoft.com> wrote in message
>> news:82B422B8-3D84-4989-AB80-9CC41CA8285B@microsoft.com...
>> > I've installed Apache 2.0, and set up a mirror configuration to IIS,
>> > i.e.
>> > the
>> > aliases point to the same physical directories. With Basic
>> > authentication,
>> > Apache works fine, i.e. the HTTP_AUTHORIZATION header gets sent every
>> > time
>> > to
>> > the CGI.
>> >
>> > The only differences between the two Web servers are as follows:
>> >
>> > 1) Apache is on port 8080, IIS is on port 80
>> >