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

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

Replies are listed 'Best First'.
Re^5: Basic / Digest authentication in website
by ikegami (Patriarch) on Jul 11, 2010 at 18:57 UTC

    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.

Re^5: Basic / Digest authentication in website
by TheFlyingCorpse (Novice) on Jul 11, 2010 at 18:44 UTC
    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".