jinyedge's note
{http://www.jinyedge.pe.kr}


Hi, this is jinyedge. I'm a software developer. I hope you can find some useful information in my homepage.


jinyedge at gmail.com
Since 2001.12.05

 

 
Subj Cont
 
Subj: Perl, Authentication against Novell edirectory using Net::LDAP.
Mtime: 2009-11-03 01:03:24

#! /usr/bin/perl
use strict;
use Net::LDAP;

#------------------------------------------------------
sub auth_edirectory{
    my $host = shift;
    my $port = shift;
    my $base_dn = shift;
    my $admin_dn = shift;
    my $admin_pw = shift;
    my $un = shift;
    my $pw = shift;

    my $ldap = Net::LDAP->new($host, port => $port) or return 0;
    $ldap->bind ($admin_dn, password => $admin_pw) or return 0;

    # Get user_dn.
    my $res = $ldap->search(base => $base_dn, filter => "uid=$un") or return 0;
    $ldap->unbind;

    my $user_dn;
    my $entry = $res->shift_entry;
    if($entry){
        $user_dn = $entry->dn;
    }
    else{
        return 0;
    }

    # Auth user.
    $ldap = Net::LDAP->new($host, port => $port) or die "$@";
    my $res = $ldap->bind ($user_dn, password=>"$pw") or die "$@";
    $ldap->unbind;

    if($res->code){
        return 0;
    }

    return 1;
}

#------------------------------------------------------
# main.

if(auth_edirectory("10.0.0.161", 1389, "o=pinetree", "cn=admin,o=pinetree", "1243", "puser", "puser1q")){
    print "OK\n";
}
else{
    print "ERR\n";
}