Hi, On Friday 13 May 2005 18:06, yelekeri wrote: > How to authenticate a user in the web page with the active directory > using perl ldap. Basically what I want is to get the password of the > user on the web page (may be encryted or atleast text) and compare > that password thru LDAP. And if the password matches, wants to display
> some other page. How to acheive this thru perl LDAP. I use bind to achieve this. Below is some sample code. Oh, if you want things to be a tad more secure, you can use LDAP over SSL....that is if LDAP over SSL is enabled in your AD forest ($domain,$user,$pass, $execnode, $port)[EMAIL PROTECTED]; use Net::LDAP; # Build Search filter $filter="(\&(userPrincipalName=*$domain*)(sAMAccountName=$user))"; # Set Search node if not passed if (!$execnode){ print "You must specify an AD Global Catalog Server\n"; exit; } $port=3268; print "NODE:$execnode PORT: $port\n"; # Get the users DN via anonymous bind to Active Directory. This assumes that you have enabled anonymous access to AD # If you have not, you will have to do an authenticated bind. # set the DN to null $dn=""; # For performance reasons limit the data returned to the sAMAccountName @attr=("sAMAccountName"); if ($ldap = new Net::LDAP("$execnode",port => $port,debug => 0,version =>3)){ if ($result=$ldap->ldapbind()){ $result=$mesg = $ldap->search(filter => $filter,scope => "sub",attrs =>[EMAIL PROTECTED]); foreach $entry ($mesg->all_entries) { $dn=$entry->dn; } $ldap->unbind; } else { print "Anonymous Bind Failed to $execnode\n"; } } else { print "Initial connect to $execnode failed\n"; } print "DN: $dn\n"; # Do an authenticated bind to a domain controller if we have a DN. Use port 3268 # so that the controller responds as a Global Catalog Server. if ($dn){ if ($ldap = new Net::LDAP("$execnode",port => $port,debug => 0,version =>3)){ if ($result=$ldap->ldapbind('dn' => "$dn",'password' => "$pass" )){ $err=$result->code; if ($err){ if ($err==49){ print "Incorrect username and/or password (49)"; } else { print "ERROR:$err\n"; } } else { print "Authenticated!"; } } else { print "Authenticated Bind Failed to $execnode\n"; } } else { print "Initial connect to $execnode failed\n"; } } else { print "No user found that corresponds to $user\n"; }