Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

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=""; $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"; } else { print "You are a horrible, horrible person, and a slut. Try again." +; }
There. I feel better.

Replies are listed 'Best First'.
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.
        For me it doesn't work. Connection is successful, I provide correct username and password. still login fails

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: CUFP [id://994703]
Approved by davido
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2017-10-22 01:11 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (271 votes). Check out past polls.