Hi guys, I'm totally stuck with this, and I'm desperate to get a working solution.
I have a Tru64 Unix machine, running mod_perl-1.26, Apache 1.3.22 and I've installed the ApacheDBI-0.88 and DBI-1.18 stuff. I am connecting to an Oracle database on another host, running 8.1.6 client libs on the web host. Oracle's sqlplus works perfectly fine to test the DB connection. I've got the following in my httpd.conf SetEnv ORACLE_BASE "/usr/local/oracle" SetEnv ORACLE_HOME "/usr/local/oracle/product/8.1.6" PassEnv ORACLE_BASE PassEnv ORACLE_HOME SetEnv ORAENV_ASK NO SetEnv LD_LIBRARY_PATH "/usr/local/lib:/usr/local/oracle/product/8.1.6/lib" SetEnv ORACLE_SID ACNTS PerlModule Apache::AuthDBI PerlRequire /usr/local/WWW/apache-1.3.22/conf/startup.pl I then have this in the .htaccess file of the folder I'm trying to protect: AuthName "DBI Login" AuthType Basic PerlAuthenHandler Apache::AuthDBI::authen PerlSetVar Auth_DBI_data_source dbi:Oracle:ACNTS PerlSetVar Auth_DBI_username acnts_user PerlSetVar Auth_DBI_password acnts_password # DBI->connect($data_source, $username, $password) PerlSetVar Auth_DBI_pwd_table stud_security PerlSetVar Auth_DBI_uid_field username PerlSetVar Auth_DBI_pwd_field sys.pass_dec(password) #SELECT pwd_field FROM pwd_table WHERE uid_field=$user #PerlSetVar Auth_DBI_encrypted off #PerlSetVar Auth_DBI_authoritative on #PerlSetVar Auth_DBI_nopasswd off require valid-user I have the following in my startup.pl file #!/usr/local/bin/perl -w # to load this file when the server starts, add this to httpd.conf: # PerlRequire /path/to/startup.pl # make sure we are in a sane environment. $ENV{GATEWAY_INTERFACE} =~ /^CGI-Perl/ or die "GATEWAY_INTERFACE not Perl!"; use Apache::Registry; use Apache::Status; use Apache::DBI; use Apache::AuthDBI; use strict; # optional configuration for Apache::DBI.pm: # choose debug output: 0 = off, 1 = quiet, 2 = chatty $Apache::DBI::DEBUG = 2; # configure all connections which should be established during server startup. # keep in mind, that if the connect does not succeeed, your server won't start # until the connect times out (database dependent) ! # you may use a DSN with attribute settings specified within Apache::DBI->connect_on_init("dbi:Oracle(AutoCommit=>1):ACNTS", "acntsdba", "acntsdba"); # configure the ping behavior of the persistent database connections # you may NOT not use a DSN with attribute settings specified within # $timeout = 0 -> always ping the database connection (default) # $timeout < 0 -> never ping the database connection # $timeout > 0 -> ping the database connection only if the last access # was more than timeout seconds before my $timeout = 0 ; Apache::DBI->setPingTimeOut("dbi:Oracle:ACNTS", $timeout); # optional configuration for Apache::AuthDBI.pm: # choose debug output: 0 = off, 1 = quiet, 2 = chatty $Apache::AuthDBI::DEBUG = 2; # set lifetime in seconds for the entries in the cache Apache::AuthDBI->setCacheTime(60); # set minimum time in seconds between two runs of the handler which cleans the cache Apache::AuthDBI->setCleanupTime(-1); # use shared memory of given size for the cache #Apache::AuthDBI->initIPC(50000); 1; As you can see, this is pretty much textbook configuration from all the man/help/perldoc's I've been able to dig up... Here is a trace from the error.log file: ========== 5960 Apache::AuthDBI::authen request type = >initial main< REQUEST: GET /PastExams/AssocLogo.gif HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Accept-Language: en-au Authorization: Basic dGVzdDp0ZXN0dXNl Connection: Keep-Alive Host: association-test.cqu.edu.au If-Modified-Since: Mon, 30 Apr 2001 04:45:19 GMT If-None-Match: "1d394-1d7d-3aeceddf" Referer: http://association-test.cqu.edu.au/PastExams/ User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) HTTP/1.1 (null) 5960 Apache::AuthDBI::authen get_basic_auth_pw: res = >0<, password sent = >testuse< 5960 Apache::AuthDBI::authen user sent = >test< 5960 Apache::AuthDBI::authen Config{ pwdcasesensitive } = on 5960 Apache::AuthDBI::authen Config{ pwd_whereclause } = 5960 Apache::AuthDBI::authen Config{ placeholder } = off 5960 Apache::AuthDBI::authen Config{ log_field } = 5960 Apache::AuthDBI::authen Config{ uid_field } = username 5960 Apache::AuthDBI::authen Config{ authoritative } = on 5960 Apache::AuthDBI::authen Config{ data_source } = dbi:Oracle:ACNTS 5960 Apache::AuthDBI::authen Config{ grp_field } = 5960 Apache::AuthDBI::authen Config{ encrypted } = on 5960 Apache::AuthDBI::authen Config{ pwd_field } = sys.pass_dec(password) 5960 Apache::AuthDBI::authen Config{ nopasswd } = off 5960 Apache::AuthDBI::authen Config{ grp_table } = 5960 Apache::AuthDBI::authen Config{ pwd_table } = stud_security 5960 Apache::AuthDBI::authen Config{ password } = acnts_password 5960 Apache::AuthDBI::authen Config{ log_string } = 5960 Apache::AuthDBI::authen Config{ uidcasesensitive } = on 5960 Apache::AuthDBI::authen Config{ encryption_salt } = password 5960 Apache::AuthDBI::authen Config{ username } = acnts_user 5960 Apache::AuthDBI::authen Config{ grp_whereclause } = 5960 Apache::AuthDBI::authen passwd not found in cache The problem I have is that I can enter absolutly ANY username with or without a Password and it always let's me through.. It should DECLINE! I found a trace test on the web showing the SELECT statement being used. I just can't get mine to do that.. I've tried this every which way, nothings working.. I would love some help in trying to figure this out. Thanks heaps, Andrew. More info: bash-2.02# perl -v This is perl, version 5.004_04 built for alpha-dec_osf Copyright 1987-1997, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5.0 source kit. bash-2.02# perl -V Summary of my perl5 (5.0 patchlevel 4 subversion 4) configuration: Platform: osname=dec_osf, osvers=4.0, archname=alpha-dec_osf uname='osf1 hendrix.cqu.edu.au v4.0 1229 alpha ' hint=recommended, useposix=true, d_sigaction=define bincompat3=y useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-O4', gccversion= cppflags='-std -D_INTRINSICS -D__LANGUAGE_C__' ccflags ='-std -D_INTRINSICS -D__LANGUAGE_C__' stdchar='unsigned char', d_stdstdio=define, usevfork=false voidflags=15, castflags=0, d_casti32=define, d_castneg=define intsize=4, alignbytes=8, usemymalloc=y, prototype=define Linker and Libraries: ld='ld', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /usr/shlib /shlib /lib /usr/lib /usr/ccs/lib libs=-ldbm -ldb -lm libc=/usr/shlib/libc.so, so=so useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-shared -expect_unresolved "*" -O4 -msym -s -L/usr/local/lib' Characteristics of this binary (from libperl): Built under dec_osf Compiled at Sep 3 1999 09:08:13 @INC: /usr/local/lib/perl5/alpha-dec_osf/5.00404 /usr/local/lib/perl5 /usr/local/lib/perl5/site_perl/alpha-dec_osf /usr/local/lib/perl5/site_perl .