HTTP HTTP GET HTTP Basic auth HTTP Digest auth # Server-side HTTP/1.1 401 Need Basic or Digest auth Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 27 WWW-Authenticate: Digest realm="testrealm", nonce="1" WWW-Authenticate: Basic realm="testrealm" This is not the real page! HTTP/1.1 401 Sorry wrong password Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 29 WWW-Authenticate: Basic realm="testrealm" WWW-Authenticate: Digest realm="testrealm", nonce="2" This is a bad password page! HTTP/1.1 200 Things are fine in server land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page! HTTP/1.1 401 Need Basic or Digest auth (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 27 WWW-Authenticate: Digest realm="testrealm", nonce="3" WWW-Authenticate: Basic realm="testrealm" This is not the real page! HTTP/1.1 401 Sorry wrong password (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 29 WWW-Authenticate: Basic realm="testrealm" WWW-Authenticate: Digest realm="testrealm", nonce="4" This is a bad password page! HTTP/1.1 401 Sorry wrong password (3) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 29 WWW-Authenticate: Digest realm="testrealm", nonce="5" WWW-Authenticate: Basic realm="testrealm" This is a bad password page! HTTP/1.1 200 Things are fine in server land (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page! HTTP/1.1 401 Need Basic or Digest auth Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 27 WWW-Authenticate: Digest realm="testrealm", nonce="1" WWW-Authenticate: Basic realm="testrealm" HTTP/1.1 401 Sorry wrong password Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 29 WWW-Authenticate: Basic realm="testrealm" WWW-Authenticate: Digest realm="testrealm", nonce="2" This is a bad password page! HTTP/1.1 200 Things are fine in server land Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page! HTTP/1.1 401 Need Basic or Digest auth (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 27 WWW-Authenticate: Digest realm="testrealm", nonce="3" WWW-Authenticate: Basic realm="testrealm" HTTP/1.1 401 Sorry wrong password (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 29 WWW-Authenticate: Basic realm="testrealm" WWW-Authenticate: Digest realm="testrealm", nonce="4" This is a bad password page! HTTP/1.1 401 Sorry wrong password (3) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 29 WWW-Authenticate: Digest realm="testrealm", nonce="5" WWW-Authenticate: Basic realm="testrealm" This is a bad password page! HTTP/1.1 200 Things are fine in server land (2) Server: Microsoft-IIS/5.0 Content-Type: text/html; charset=iso-8859-1 Content-Length: 32 Finally, this is the real page! # Client-side http !SSPI crypto libauthretry HTTP authorization retry (Digest switching to Basic) # we force our own host name, in order to make the test machine independent CURL_GETHOSTNAME=curlhost # we try to use the LD_PRELOAD hack, if not a debug build LD_PRELOAD=%PWD/libtest/.libs/libhostname.so http://%HOSTIP:%HTTPPORT/2026 digest basic chkhostname curlhost # Verify data after the test has been "shot" ^User-Agent:.* GET /20260100 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /20260100 HTTP/1.1 Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b" Host: %HOSTIP:%HTTPPORT Accept: */* GET /20260200 HTTP/1.1 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= Host: %HOSTIP:%HTTPPORT Accept: */* GET /20260300 HTTP/1.1 Host: %HOSTIP:%HTTPPORT Accept: */* GET /20260300 HTTP/1.1 Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae" Host: %HOSTIP:%HTTPPORT Accept: */* GET /20260400 HTTP/1.1 Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz Host: %HOSTIP:%HTTPPORT Accept: */* GET /20260500 HTTP/1.1 Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= Host: %HOSTIP:%HTTPPORT Accept: */*