From: Graham B. <gb...@po...> - 2002-09-16 12:27:53
|
----- Forwarded message from "DeMarco, Alex" <DEM...@sy...> ----- Date: Mon, 16 Sep 2002 08:21:47 -0400 To: "'gb...@po...'" <gb...@po...> From: "DeMarco, Alex" <DEM...@sy...> Subject: checkauth problem Hello, I'm using the script below but cannot get it to work right. It appears to run fine but I keep getting bad userid or password. I'm trying to authenticate against an Exchange 5.5 server that is running ldap. I've tried my plain userid and domain\userid without any luck. Am I missing something? Any hints would be appreciated. thanks! - Alex #!/usr/local/bin/perl # # Contributed by Mark Wilcox <mew...@un...> use Net::LDAP; #checkauth.pl #get id and password from command line #return if authenticated or not my $id = shift; my $password = shift; print "id is $id\n"; die ("usage checkauth.pl uid password.") unless (($id) && ($password)); my $host = "141.254.1.24"; my $base = "o=SUNY"; my $ldap = new Net::LDAP($host); $ldap->bind(); my @attrs = ["uid"]; my $mesg = $ldap->search( base => $base, filter => "uid=$id", attrs => @attrs ); print "LDAP error is ",$mesg->code(),"\n" if $mesg->code(); #if we don't trap a bad id, authentication will give false positive #because LDAP server will revert to anonymous authentication die ("bad id\n") unless $mesg->count(); die("more than 1 entry matches uid\n") if $mesg->count > 1; #get a complete dn from search return my $entry = $mesg->entry(0); # CAUTION: assumes only one value returned my $dn = $entry->dn; #now rebind and then do search again $mesg = $ldap->bind($dn, password=>$password); die ("bad id or password \n") if $mesg->code() ; print "$id OK\n"; $ldap->unbind(); print "done\n"; ----- End forwarded message ----- |