in reply to Re^2: Basic / Digest authentication in website
in thread Basic / Digest authentication in website

Ok, so it is Digest authentication, not Basic, that's why the first block of code doesn't work for you.

  • Comment on Re^3: Basic / Digest authentication in website

Replies are listed 'Best First'.
Re^4: Basic / Digest authentication in website
by alexbio (Monk) on Jul 11, 2010 at 18:09 UTC

    LWP should handle both Basic and Digest authentication with LWP::Authen::Basic and LWP::Authen::Digest.

    I've searched for more documentation about LWP and Digest authentication, but not found much more.

    I've found the node LWP and Digest Authentication here on PerlMonks which linked me to the t/jigsaw-auth-d.t script inside the libwww-perl distribution. which is kind of confusing.

    use LWP::UserAgent; { package MyUA; use vars qw(@ISA); @ISA = qw(LWP::UserAgent); my @try = (['foo', 'bar'], ['', ''], ['guest', ''], ['guest', 'gues +t']); sub get_basic_credentials { my($self,$realm, $uri, $proxy) = @_; print "$realm:$uri:$proxy => "; my $p = shift @try; print join("/", @$p), "\n"; return @$p; } } my $ua = MyUA->new(keep_alive => 1); my $req = HTTP::Request->new(GET => "http://jigsaw.w3.org/HTTP/Digest/ +"); my $res = $ua->request($req);

    To properly use the digest authentication the function get_basic_credentials() have to be overridden as ikegami did on Re^3: LWP and Digest Authentication.

    Alex's Log - http://alexlog.co.cc

      LWP should handle both Basic and Digest authentication

      It does. The parent only said that ->authorization_basic wouldn't work. ->authorization_basic sets the basic authentication headers only.

      Its fun how the code appears to work (returns the HTML output), against my local testserver, but not on the server I have the issues with.
      This is the code, correct me please if I did any lazy things that can make it work :-P
      use LWP::UserAgent; use HTTP::Request::Common; { package MyUA; use vars qw(@ISA); @ISA = qw(LWP::UserAgent); my @try = (['username', 'password']); sub get_basic_credentials { my($self,$realm, $uri, $proxy) = @_; print "$realm:$uri:$proxy => "; my $p = shift @try; print join("/", @$p), "\n"; return @$p; } } my $ua = MyUA->new(keep_alive => 0); my $req = HTTP::Request->new(GET => "http://mail.isnitro.com:49282/nav +igation/nav_home.shtml"); my $res = $ua->request($req)->as_string; print "Res: ", $res;
      The Digest realm is as far as I can see, static against "GWAVA Console".