http://www.perlmonks.org?node_id=930728

tiedwu has asked for the wisdom of the Perl Monks concerning the following question:

I am writing a perl script below that will get the web page source, looking into the response header from server, you can see it provides NTLM and Negotiate, but it seems always uses Negotiate, how can I select NTLM for authentication? I might use NTLM authentication with the way LWP::Useragent->credentials, but I don't know how to use Negotiate.
#!/usr/bin/perl use LWP::UserAgent; use HTTP::Request::Common; use LWP::Debug qw(+); use Authen::NTLM; use strict; use warnings; my $url = "http://10.1.1.1"; my $ua = new LWP::UserAgent(keep_alive => 1); $ua->credentials('10.1.1.1:80', '', 'user', 'passwd'); my $req = HTTP::Request->new(GET => $url); print "--Peforming request now...---------\n"; my $res = $ua->request($req); print "--Done with request ...---------\n"; # check the outcome if ($res->is_success) { print $res->content; } else { print "Error: " . $res->status_line . "\n"; print $res->headers()->as_string(), "\n"; } exit 0;
The output:
elvis@elvis-laptop:~/tmp/person$ ./d2.pl --Peforming request now...--------- --Done with request ...--------- Error: 401 Unauthorized Date: Tue, 11 Oct 2011 02:13:08 GMT Server: Microsoft-IIS/7.5 WWW-Authenticate: Negotiate WWW-Authenticate: NTLM Content-Length: 1181 Content-Type: text/html Client-Date: Tue, 11 Oct 2011 02:12:23 GMT Client-Peer: 10.1.1.2:80 Client-Response-Num: 1 Client-Warning: Unsupported authentication scheme 'negotiate' Title: 401 - δ��Ȩ: ���&#6 +5533;ƾ����Ч��&#6 +5533;��ʱ��ܾ X-Powered-By: ASP.NET
From the output, you can see it will redirect to 10.1.1.2 for authentication. I am not sure if it is the problem that authentication wasn't passed to next server. Any comments will be appreciated. the web page