1<testcase> 2<info> 3<keywords> 4HTTP 5HTTP GET 6HTTP Basic auth 7HTTP Digest auth 8</keywords> 9</info> 10# Server-side 11<reply> 12 13<!-- Alternate the order that Basic and Digest headers appear in responses to 14ensure that the order doesn't matter. --> 15 16<!-- First request has Digest auth, wrong password --> 17<data100> 18HTTP/1.1 401 Need Basic or Digest auth 19Server: Microsoft-IIS/5.0 20Content-Type: text/html; charset=iso-8859-1 21Content-Length: 27 22WWW-Authenticate: Digest realm="testrealm", nonce="1" 23WWW-Authenticate: Basic realm="testrealm" 24 25This is not the real page! 26</data100> 27 28<data1100> 29HTTP/1.1 401 Sorry wrong password 30Server: Microsoft-IIS/5.0 31Content-Type: text/html; charset=iso-8859-1 32Content-Length: 29 33WWW-Authenticate: Basic realm="testrealm" 34WWW-Authenticate: Digest realm="testrealm", nonce="2" 35 36This is a bad password page! 37</data1100> 38 39<!-- Second request has Basic auth, right password --> 40<data200> 41HTTP/1.1 200 Things are fine in server land 42Server: Microsoft-IIS/5.0 43Content-Type: text/html; charset=iso-8859-1 44Content-Length: 32 45 46Finally, this is the real page! 47</data200> 48 49<!-- Third request has Digest auth, wrong password --> 50<data300> 51HTTP/1.1 401 Need Basic or Digest auth (2) 52Server: Microsoft-IIS/5.0 53Content-Type: text/html; charset=iso-8859-1 54Content-Length: 27 55WWW-Authenticate: Digest realm="testrealm", nonce="3" 56WWW-Authenticate: Basic realm="testrealm" 57 58This is not the real page! 59</data300> 60 61<data1300> 62HTTP/1.1 401 Sorry wrong password (2) 63Server: Microsoft-IIS/5.0 64Content-Type: text/html; charset=iso-8859-1 65Content-Length: 29 66WWW-Authenticate: Basic realm="testrealm" 67WWW-Authenticate: Digest realm="testrealm", nonce="4" 68 69This is a bad password page! 70</data1300> 71 72<!-- Fourth request has Basic auth, wrong password --> 73<data400> 74HTTP/1.1 401 Sorry wrong password (3) 75Server: Microsoft-IIS/5.0 76Content-Type: text/html; charset=iso-8859-1 77Content-Length: 29 78WWW-Authenticate: Digest realm="testrealm", nonce="5" 79WWW-Authenticate: Basic realm="testrealm" 80 81This is a bad password page! 82</data400> 83 84<!-- Fifth request has Basic auth, right password --> 85<data500> 86HTTP/1.1 200 Things are fine in server land (2) 87Server: Microsoft-IIS/5.0 88Content-Type: text/html; charset=iso-8859-1 89Content-Length: 32 90 91Finally, this is the real page! 92</data500> 93 94<datacheck> 95HTTP/1.1 401 Need Basic or Digest auth 96Server: Microsoft-IIS/5.0 97Content-Type: text/html; charset=iso-8859-1 98Content-Length: 27 99WWW-Authenticate: Digest realm="testrealm", nonce="1" 100WWW-Authenticate: Basic realm="testrealm" 101 102HTTP/1.1 401 Sorry wrong password 103Server: Microsoft-IIS/5.0 104Content-Type: text/html; charset=iso-8859-1 105Content-Length: 29 106WWW-Authenticate: Basic realm="testrealm" 107WWW-Authenticate: Digest realm="testrealm", nonce="2" 108 109This is a bad password page! 110HTTP/1.1 200 Things are fine in server land 111Server: Microsoft-IIS/5.0 112Content-Type: text/html; charset=iso-8859-1 113Content-Length: 32 114 115Finally, this is the real page! 116HTTP/1.1 401 Need Basic or Digest auth (2) 117Server: Microsoft-IIS/5.0 118Content-Type: text/html; charset=iso-8859-1 119Content-Length: 27 120WWW-Authenticate: Digest realm="testrealm", nonce="3" 121WWW-Authenticate: Basic realm="testrealm" 122 123HTTP/1.1 401 Sorry wrong password (2) 124Server: Microsoft-IIS/5.0 125Content-Type: text/html; charset=iso-8859-1 126Content-Length: 29 127WWW-Authenticate: Basic realm="testrealm" 128WWW-Authenticate: Digest realm="testrealm", nonce="4" 129 130This is a bad password page! 131HTTP/1.1 401 Sorry wrong password (3) 132Server: Microsoft-IIS/5.0 133Content-Type: text/html; charset=iso-8859-1 134Content-Length: 29 135WWW-Authenticate: Digest realm="testrealm", nonce="5" 136WWW-Authenticate: Basic realm="testrealm" 137 138This is a bad password page! 139HTTP/1.1 200 Things are fine in server land (2) 140Server: Microsoft-IIS/5.0 141Content-Type: text/html; charset=iso-8859-1 142Content-Length: 32 143 144Finally, this is the real page! 145</datacheck> 146 147</reply> 148 149# Client-side 150<client> 151<server> 152http 153</server> 154<features> 155!SSPI 156crypto 157</features> 158<tool> 159libauthretry 160</tool> 161 162 <name> 163HTTP authorization retry (Digest switching to Basic) 164 </name> 165 <setenv> 166# we force our own host name, in order to make the test machine independent 167CURL_GETHOSTNAME=curlhost 168# we try to use the LD_PRELOAD hack, if not a debug build 169LD_PRELOAD=%PWD/libtest/.libs/libhostname.so 170 </setenv> 171 <command> 172http://%HOSTIP:%HTTPPORT/2026 digest basic 173</command> 174<precheck> 175chkhostname curlhost 176</precheck> 177</client> 178 179# Verify data after the test has been "shot" 180<verify> 181<protocol> 182GET /20260100 HTTP/1.1 183Host: %HOSTIP:%HTTPPORT 184Accept: */* 185 186GET /20260100 HTTP/1.1 187Host: %HOSTIP:%HTTPPORT 188Authorization: Digest username="testuser", realm="testrealm", nonce="1", uri="/20260100", response="5f992a2e761ab926256419f7c685f85b" 189Accept: */* 190 191GET /20260200 HTTP/1.1 192Host: %HOSTIP:%HTTPPORT 193Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= 194Accept: */* 195 196GET /20260300 HTTP/1.1 197Host: %HOSTIP:%HTTPPORT 198Accept: */* 199 200GET /20260300 HTTP/1.1 201Host: %HOSTIP:%HTTPPORT 202Authorization: Digest username="testuser", realm="testrealm", nonce="3", uri="/20260300", response="132242e602882251929be93228c830ae" 203Accept: */* 204 205GET /20260400 HTTP/1.1 206Host: %HOSTIP:%HTTPPORT 207Authorization: Basic dGVzdHVzZXI6d3JvbmdwYXNz 208Accept: */* 209 210GET /20260500 HTTP/1.1 211Host: %HOSTIP:%HTTPPORT 212Authorization: Basic dGVzdHVzZXI6dGVzdHBhc3M= 213Accept: */* 214 215</protocol> 216</verify> 217</testcase> 218