Re: HTTP_AUTHORIZATION header



I do not believe IIS is distinguishing between the two cases you mention. If
I authenticate by displaying the HTML page containing the form, then it does
not matter whether I execute the form or type the address of the CGI in -
both result in the HTTP_AUTHORIZATION header not being sent to the CGI. IIS
passes the AUTH_TYPE and AUTH_USER (for Basic) headers, so the browser has
definitely authenticated. But it does not pass the HTTP_AUTHORIZATION header
on the first form or CGI execution. This happens in both IE 6 and Firefox
1.5, and on multiple client machines, so I don't think it's client variation.
I have also tried it on two other server machines, both running IIS 5.0, and
it happens there too.

I do understand the authentication protocols involved, and I do expect the
HTTP_AUTHORIZATION header to be sent on every request, regardless of whether
Basic or NTLM is used. And this does indeed happen - once the header is
sent, it is always sent.

From what I've seen, this does appear to be a bug in IIS...


"David Wang [Msft]" wrote:

Can you explain how IIS can distinguish between you directly typing in the
address of the CGI in the address bar vs the FORM submit.

The answer is -- IIS cannot distinguish between those two cases. Thus, if
you see different behavior in those two situations, it's either client-side
variation or misunderstanding of the authentication protocol involved.

For NTLM, I do not expect HTTP Authorization header to be sent on the second
and subsequent requests after the initial negotiation completes.

For Basic, I expect the HTTP Authorization header to be sent on all
requests.

--
//David
IIS
http://blogs.msdn.com/David.Wang
This posting is provided "AS IS" with no warranties, and confers no rights.
//

"AWillemsen" <AWillemsen@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:47D24246-0A0F-4592-BA23-91A29232F5CF@xxxxxxxxxxxxxxxx
I am running IIS 5.1 on XP SP2. I have two virtual directories in the same
Web site that have anonymous access disabled - one contains HTML pages
and
the other contains a CGI executable. One of the HTML pages has a form
which
executes the CGI.

If I open a new browser window, and then open the HTML page with the form,
I
get asked for credentials (as expected). I then submit the form which
executes the CGI. The first 2 times I do this, IIS passes to the CGI the
AUTH_TYPE variable with the correct value (Basic or Negotiate, depending
on
which authentication scheme I have set up) but it does not pass the
HTTP_AUTHORIZATION variable. The 3rd and subsequent times, both variables
get passed.

Is this a bug in IIS?

Note that I tried authenticating against the CGI first, by opening a new
browser window and typing in the address of the CGI in the address bar.
This
asked me for credentials, as expected. If I then go to the HTML form and
submit it, the HTTP_AUTHORIZATION header gets passed to the CGI every
time.




.



Relevant Pages

  • Re: HTTP_AUTHORIZATION header
    ... You can configure IIS to not keep-alive with: ... I have verified that the method of execution of the CGI - GET form, ... Display HTML page in directory A, ...
    (microsoft.public.inetserver.iis.security)
  • Re: HTTP_AUTHORIZATION header
    ... I have verified that the method of execution of the CGI - GET form, ... Display HTML page in directory A, ... authentication sequence. ...
    (microsoft.public.inetserver.iis.security)
  • Re: HTTP_AUTHORIZATION header
    ... address of the CGI in the address bar vs the FORM submit. ... The answer is -- IIS cannot distinguish between those two cases. ... Web site that have anonymous access disabled - one contains HTML pages ... browser window and typing in the address of the CGI in the address bar. ...
    (microsoft.public.inetserver.iis.security)
  • Re: IIS 5.0 Integrated Authentication always looks locally than to the domian it has joined
    ... the rest of authetication option are not set. ... > HTML ... authentication happens locally and not against the domain joined. ... IIS should use the domain. ...
    (microsoft.public.inetserver.iis.security)
  • Re: HTTP Error 405-HTTP verb used to access this page is not allowed
    ... > passing a form from html to cgi page? ... As a client, is there an IIS ...
    (microsoft.public.inetserver.iis)