Re: Does Digest Access Authentication work?
Gisle Aas (aas@bergen.sn.no)
Wed, 09 Oct 1996 18:16:40 +0200
In message <199610081331.PAA28452@bergen.sn.no>, Gisle Aas writes:
> I tried to set it up against an apache_1.1.1 server without much luck.
It worked when I finally got the "Realm" set up correctly in the
server configuration files, but libwww-perl produced a warning about
"Use of uninitialized value" because apache does not use the 'opaque'
attribute.
I fixed it like this:
Index: UserAgent.pm
===================================================================
RCS file: /f/stovner/utvikling/CVSROOT/aas/perl/mods/libwww-perl/lib/LWP/UserAgent.pm,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- UserAgent.pm 1996/10/07 09:37:55 1.37
+++ UserAgent.pm 1996/10/08 14:30:43 1.38
@@ -1,4 +1,4 @@
-# $Id: UserAgent.pm,v 1.37 1996/10/07 09:37:55 aas Exp $
+# $Id: UserAgent.pm,v 1.38 1996/10/08 14:30:43 aas Exp $
package LWP::UserAgent;
@@ -368,13 +368,13 @@
my($digest) = $md5->hexdigest;
$md5->reset;
- my %resp = map { $_, $mda{$_} } qw(realm nonce opaque);
+ my %resp = map { $_ => $mda{$_} } qw(realm nonce opaque);
@resp{qw(username uri response)} =
($uid, $request->url->path, $digest);
if (defined $uid and defined $pwd) {
my(@order) = qw(username realm nonce uri response);
- if($request->method =~ /^POST|PUT$/) {
+ if($request->method =~ /^(?:POST|PUT)$/) {
$md5->add($request->content);
my($content) = $md5->hexdigest;
$md5->reset;
@@ -384,7 +384,11 @@
push(@order, "message-digest");
}
push(@order, "opaque");
- my @pairs = map { "$_=" . qq("$resp{$_}") } @order;
+ my @pairs;
+ for (@order) {
+ next unless defined $resp{$_};
+ push(@pairs, "$_=" . qq("$resp{$_}"));
+ }
my $header = "$scheme " . join(", ", @pairs);
# Need to check this isn't a repeated fail!
@@ -400,7 +404,7 @@
}
my $referral = $request->clone;
- $referral->header('Extension' => "Security/Digest");
+ #$referral->header('Extension' => "Security/Digest");
$referral->header('Authorization' => $header);
return $self->request($referral, $arg, $size, $response);
} else {