Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Simple LDAP / ActiveDirectory Authentication

by bpoag (Monk)
on Sep 20, 2012 at 17:15 UTC ( #994703=CUFP: print w/ replies, xml ) Need Help??

After much Googling and primate forehead-scratching, i've arrived at the conclusion that there are no good explanations on the web as to how to do simple LDAP authentication against ActiveDirectory in Perl; only mountains of situation-dependent and ostensibly overcomplicated slop. So, for the benefit of the monestary, I present unto thee a block of code which performs simple LDAP authentication.
use Net::LDAP; ## Fill in the following as you would sitting down in a chair and logg +ing in with standard Windows ActiveDirectory credentials.. $userName="YOURDOMAIN\\YourADAccountNameHere"; $pw="whateverpasswordyouhave"; ## BTW, if you're getting these variables passed to you via a webpage, + it's important to convert special characters that have been translat +ed into their Unicode equivalents back to straight ASCII. (For exampl +e, if your password has a ! in it, it's going to get passed as "%21" +(or whatever)).. So, to fix that, we repack the string with some swee +t, sweet regex lovin'. If not, the following two lines should be omit +ted. $pw=~s/\%([A-Fa-f0-9]{2})/pack('C',hex($1))/seg; $pw=~s/\+/ /g; ## On with the show.. $host="123.123.123.123"; $ldap=Net::LDAP->new($host) or die "Can't connect to LDAP server: $@"; $mesg=$ldap->bind($userName, password=>$pw); $results=sprintf("%s",$mesg->error); $mesg=$ldap->unbind; if ($results=~/Success/) { print "Thank you. You have successfully authenticated; You may now +enter picturesofcatslookingatofficeequipment.com"; } else { print "You are a horrible, horrible person, and a slut. Try again." +; }
There. I feel better.

Comment on Simple LDAP / ActiveDirectory Authentication
Download Code
Re: Simple LDAP / ActiveDirectory Authentication
by Anonymous Monk on Nov 18, 2013 at 11:42 UTC
    Thanks for idea ! Finally I solved the problem ! Btw - probably there is a typo in example above. I should change "t" to "w", to make it works. I mean: WAS: $ldap=Net::LDAP->net($host) or die "Can't connect to LDAP server: $@"; NOW: $ldap=Net::LDAP->new($host) or die "Can't connect to LDAP server: $@"; Any way - thanks a lot ! :)
      Fixed my typo. Thx for the heads up.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://994703]
Approved by davido
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2014-09-01 23:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (18 votes), past polls