Simon Fell > Its just code > June 2002

Saturday, June 1, 2002

I boiled the IIS authentication and persistent connections issue down to a simple test, and have seen this behavour on IIS 5.0 on W2K server w/SP2 and IIS 5.1 on XP Pro.

Create a simple HTML file foo.htm and drop it in the wwwroot\\inetpub directory, start IIS admin, expand the tree to so that you can see foo.htm, right click properties pick file security, click authentication methods, turn off everything except basic authentication and select a default domain. You will need an account called bang with a password of bang

Telnet to the server and send

GET /foo.htm HTTP/1.1
Host: localhost

you should get back a 401 response, this proves that IIS is configured for authentication only

HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.1
Date: Sun, 02 Jun 2002 05:46:39 GMT
WWW-Authenticate: Basic realm="simonathome.com"
Connection: close
Content-Length: 4431
Content-Type: text/html

Now, telnet again, and send

GET /foo.htm HTTP/1.1
Host: localhost
Authorization: Basic YmFuZzpiYW5n

You should get a 200 response, with the contents of your file,

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Sun, 02 Jun 2002 05:56:24 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Sun, 02 Jun 2002 05:45:22 GMT
ETag: "c98679aff89c21:9ed"
Content-Length: 54

<html>
<head>
</head>
<body>
foo
</body>
</html>

 the connection should still be open, now send

GET /foo.htm HTTP/1.1
Host: localhost

Rather than the expected 401 authorization error, you get a 200 again, with the file contents.