From 8ed44e8dfbe2182696becc3ca8a9950888251503 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 6 Apr 2004 15:14:10 +0000 Subject: New authentication code added, particularly noticable when doing POST or PUT with Digest or NTLM. libcurl will now use HEAD to negotiate the authentication and when done perform the requested POST. --- tests/data/test154 | 90 ++++++++++++++++++++++++++++++++++++++++++ tests/data/test155 | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/data/test156 | 79 +++++++++++++++++++++++++++++++++++++ tests/data/test157 | 38 ++++++++++++++++++ tests/data/test88 | 4 +- 5 files changed, 322 insertions(+), 3 deletions(-) create mode 100644 tests/data/test154 create mode 100644 tests/data/test155 create mode 100644 tests/data/test156 create mode 100644 tests/data/test157 (limited to 'tests/data') diff --git a/tests/data/test154 b/tests/data/test154 new file mode 100644 index 000000000..e9321a308 --- /dev/null +++ b/tests/data/test154 @@ -0,0 +1,90 @@ +# Server-side + + +auth_required + + +HTTP/1.1 401 Authorization Required swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" +WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" +WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344" +Content-Type: text/html; charset=iso-8859-1 + +This is not the real page + + +# This is supposed to be returned when the server gets a +# Authorization: Digest line passed-in from the client + +HTTP/1.1 200 OK swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +Content-Type: text/html; charset=iso-8859-1 +Content-Length: 23 + +This IS the real page! + + + +HTTP/1.1 401 Authorization Required swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" +WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" +WWW-Authenticate: Digest realm="gimme all yer s3cr3ts", nonce="11223344" +Content-Type: text/html; charset=iso-8859-1 + +HTTP/1.1 200 OK swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +Content-Type: text/html; charset=iso-8859-1 +Content-Length: 23 + +This IS the real page! + + + + +# Client-side + + +http + + +HTTP PUT with --anyauth authorization (picking Digest) + + +http://%HOSTIP:%HOSTPORT/154 -T log/put154 -u testuser:testpass --anyauth + + +This is data we upload with PUT +a second line +line three +four is the number of lines + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +HEAD /154 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* + +PUT /154 HTTP/1.1 +Authorization: Digest username="testuser", realm="gimme all yer s3cr3ts", nonce="11223344", uri="/154", response="b71551e12d1c456e47d8388ecb2edeca" +User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* +Content-Length: 85 +Expect: 100-continue + +This is data we upload with PUT +a second line +line three +four is the number of lines + + diff --git a/tests/data/test155 b/tests/data/test155 new file mode 100644 index 000000000..720ca29be --- /dev/null +++ b/tests/data/test155 @@ -0,0 +1,114 @@ +# Server-side + + +auth_required + + +HTTP/1.1 401 NTLM Authorization Required swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" +WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" +WWW-Authenticate: NTLM +Content-Type: text/html; charset=iso-8859-1 +Connection: close + +moo + + +# This is supposed to be returned when the server gets a first +# Authorization: NTLM line passed-in from the client + +HTTP/1.1 401 Type-1 received, send back type-2 +Server: Microsoft-IIS/5.0 +Content-Length: 34 +Content-Type: text/html; charset=iso-8859-1 +WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== + +This is not the real page either! + + +# This is supposed to be returned when the server gets the second +# Authorization: NTLM line passed-in from the client + +HTTP/1.1 200 Type-3 Recevied and all Things are fine swsclose +Server: Microsoft-IIS/5.0 +Content-Type: text/html; charset=iso-8859-1 + +Finally, this is the real page! + + + +HTTP/1.1 401 NTLM Authorization Required swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +WWW-Authenticate: Blackmagic realm="gimme all yer s3cr3ts" +WWW-Authenticate: Basic realm="gimme all yer s3cr3ts" +WWW-Authenticate: NTLM +Content-Type: text/html; charset=iso-8859-1 +Connection: close + +HTTP/1.1 401 Type-1 received, send back type-2 +Server: Microsoft-IIS/5.0 +Content-Length: 34 +Content-Type: text/html; charset=iso-8859-1 +WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== + +HTTP/1.1 200 Type-3 Recevied and all Things are fine swsclose +Server: Microsoft-IIS/5.0 +Content-Type: text/html; charset=iso-8859-1 + +Finally, this is the real page! + + + + +# Client-side + + +http + + +HTTP PUT with --anyauth authorization (picking NTLM) + + +http://%HOSTIP:%HOSTPORT/155 -T log/put155 -u testuser:testpass --anyauth + + +This is data we upload with PUT +a second line +line three +four is the number of lines + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +HEAD /155 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* + +HEAD /155 HTTP/1.1 +Authorization: NTLM TlRMTVNTUAABAAAAAgIAAAAAAAAgAAAAAAAAACAAAAA= +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* + +PUT /155 HTTP/1.1 +Authorization: NTLM TlRMTVNTUAADAAAAGAAYAEgAAAAYABgAYAAAAAAAAABAAAAACAAIAEAAAAAAAAAASAAAAAAAAAB4AAAAAYIAAHRlc3R1c2VyWmRDApEJkUyGOPS3DjvASModEeW/N/FBqYVyF4y6/y/7F6qmEQ7lXjXFF3tH1145 +User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* +Content-Length: 85 +Expect: 100-continue + +This is data we upload with PUT +a second line +line three +four is the number of lines + + diff --git a/tests/data/test156 b/tests/data/test156 new file mode 100644 index 000000000..94ac0ed98 --- /dev/null +++ b/tests/data/test156 @@ -0,0 +1,79 @@ +# Server-side + + +HTTP/1.1 200 No Authorization Required swsclose swsbounce +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +Content-Type: text/html; charset=iso-8859-1 +Connection: close + + + + +HTTP/1.1 200 No Authorization Required swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +Content-Type: text/html; charset=iso-8859-1 +Connection: close + +PUT received fine. Thank you very much + + + +HTTP/1.1 200 No Authorization Required swsclose swsbounce +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +Content-Type: text/html; charset=iso-8859-1 +Connection: close + +HTTP/1.1 200 No Authorization Required swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +Content-Type: text/html; charset=iso-8859-1 +Connection: close + +PUT received fine. Thank you very much + + + + +# Client-side + + +http + + +HTTP PUT with --anyauth (when the server requires none) + + +http://%HOSTIP:%HOSTPORT/156 -T log/put156 -u testuser:testpass --anyauth + + +This is data we upload with PUT +a second line +line three +four is the number of lines + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +HEAD /156 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* + +PUT /156 HTTP/1.1 +User-Agent: curl/7.10.5 (i686-pc-linux-gnu) libcurl/7.10.5 OpenSSL/0.9.7a ipv6 zlib/1.1.3 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* +Content-Length: 85 +Expect: 100-continue + +This is data we upload with PUT +a second line +line three +four is the number of lines + + diff --git a/tests/data/test157 b/tests/data/test157 new file mode 100644 index 000000000..3f6ed3691 --- /dev/null +++ b/tests/data/test157 @@ -0,0 +1,38 @@ +# Server-side + + +HTTP/1.1 200 No Authorization Required swsclose +Server: Apache/1.3.27 (Darwin) PHP/4.1.2 +Content-Type: text/html; charset=iso-8859-1 +Connection: close + +GET received and served just fine. Thank you very much + + + +# Client-side + + +http + + +HTTP GET with --anyauth (when the server requires none) + + +http://%HOSTIP:%HOSTPORT/157 -u testuser:testpass --anyauth + + + +# Verify data after the test has been "shot" + + +^User-Agent:.* + + +GET /157 HTTP/1.1 +Host: 127.0.0.1:8999 +Pragma: no-cache +Accept: */* + + + diff --git a/tests/data/test88 b/tests/data/test88 index 401de7ba0..f1caba4bc 100644 --- a/tests/data/test88 +++ b/tests/data/test88 @@ -62,12 +62,10 @@ four is the number of lines ^User-Agent:.* -PUT /88 HTTP/1.1 +HEAD /88 HTTP/1.1 Host: 127.0.0.1:8999 Pragma: no-cache Accept: */* -Content-Length: 85 -Expect: 100-continue PUT /88 HTTP/1.1 Authorization: Digest username="testuser", realm="testrealm", nonce="1053604145", uri="/88", response="78a49fa53d0c228778297687d4168e71" -- cgit v1.2.3