On Wed, 11 Jul 2001, Justin Rains wrote:
Date: Wed, 11 Jul 2001 07:04:43 -0700 (PDT)
From: Justin Rains [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: Errors when trying to use AuthAny.pm
Hi all. I am relatively new to mod_perl so try to bear with me.
I am trying to use the AuthAny.pm module to provide some basic
authentication. First off.. Do I put it in the same directory as
Registry.pm? That is where I have it now. In my httpd.conf file
I put the following in:
Location /tools
AuthName Test
AuthType Basic
PerlAuthenHandler AuthAny
require valid-user
/Location
/VirtualHost
I am running on a cobalt raq 3. Here is what I have in AuthAny.pm:
package Apache::AuthAny;
# file: Apache/AuthAny.pm
use strict;
use Apache::Constants qw(:common);
sub handler {
my $r = shift;
my($res, $sent_pw) = $r-get_basic_auth_pw;
return $res if $res != OK;
my $user = $r-connection-user;
unless($user and $sent_pw) {
$r-note_basic_auth_failure;
$r-log_reason(Both a username and password must be
provided, $r-filename);
return AUTH_REQUIRED;
}
return OK;
}
1;
__END__
The error log message is:
[Wed Jul 11 09:04:59 2001] [error] (2)No such file or directory:
access to /tools/ failed for nr2-216-196-142-76.fuse.net, reason:
User not known to the underlying authentication module
Am I missing something here? I am using the standard apache that
came with the raq.
Thanks for any help!
Justin
==
Justin Rains
WSI.com Consulting
http://www.wsicnslt.com/
Justin!
Wassup? Welcome to mod_perl! It's good to see your name on the list.
Since no one seems to have answered your question, I'll give it a
shot. The only thing I can come up with right now is that you might
have mistyped the Location directive. You have:
PerlAuthenHandler AuthAny
And the Eagle book (page 283) has:
PerlAuthenHandler Apache::AuthAny
Other than that, I can't really see a problem. I pasted your code
into my own module (not in the Apache namespace, however), and it all
worked without a problem.
FWIW, I tend to carve out my own namespaces and place my Apache Perl
modules into a library path that gets a use() in a startup file. To
be more explicit, I'll put my stuff into a directory like
/usr/local/apache/lib/perl. Then in my httpd.conf, I'll add a line
line like PerlRequire conf/perlstartup.pl (where conf is relative
to the server root, or just whereever you want to put it). My Perl
startup file then uses all the modules I've written, like so:
#!/usr/bin/perl
# file: perlstartup.pl
use lib '/usr/local/apache/lib/perl';
use Foo::Bar;
use Foo::Baz;
use Foo::AuthAny;
1;
HTH!
ky