Подключение к LDAP из скриптов

Материал из Lblss.ru
Перейти к: навигация, поиск

Для подключения только для чтения подойдёт любая учётка, для записи нужны привилегии администратора.

PHP

<?php
$ldapServer = 'dc.domain.local';
$ldapUserToAuth = 'username@domain.local'; // Любая активная учётка в домене
$ldapUserPasswd = 'UserPassWord';
$ldapBase = 'dc=domain, dc=local'; // Откуда начинать поиск (тут во всём домене)
$ldapFilter = '(&(objectclass=user)(objectcategory=Person)(sn=*))';
$justthese = array('samaccountname', 'displayname'); // имена полей, которые необходимо вытащить
 
// Connecting to LDAP
$ldapconn = ldap_connect($ldapServer)
    or die("Could not connect to $ldapServer");
// Пара опций - параметры чего -то-там
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
// Авторизация
$ldapbind = ldap_bind($ldapconn, $ldapUserToAuth, $ldapUserPasswd);
 
$sr=ldap_search($ldapconn, $ldapBase, $ldapFilter, $justthese);
$info = ldap_get_entries($ldapconn, $sr);
 
for ($i=0, $c=$info['count']; $i<$c; $i++)
    echo $info[$i]['samaccountname'][0] . ' -> ' .$info[$i]['displayname'][0];
?>

Ага, именно samaccountname - ключи мелкими буквами.

PERL

#!/usr/bin/perl -w
 
use strict;
use Net::LDAP;
 
my $ldapServer = 'dc.domain.local';
my $ldapUserToAuth = 'username@domain.local'; # Любая активная учётка в домене
my $ldapUserPasswd = 'UserPassWord';
 
# Откуда начинать поиск (тут во всём домене)
my $ldapBase = 'dc=domain, dc=local';.
# Что искать
my $ldapFilter = '(&(objectclass=user)(objectcategory=Person)(sn=*))';
# Какие поля вернуть
my $ldapAttrs = [ 'sAMAccountName','displayName','mail' ];
 
 
# Подключаемся к серверу LDAP
my $ldap = Net::LDAP->new ($ldapServer) or die "Error: $@\n";
my $ldapMesg = $ldap->bind ( "$ldapUserToAuth",
                       password => "$ldapUserPasswd",
                       version => 3);
 
# Забираем оттуда всех юзеров
my $ldapSearch = $ldap->search ( base   => "$ldapBase",
                            filter  => "$ldapFilter",
                            attrs   =>  $ldapAttrs
);
die $ldapSearch->error if $ldapSearch->code;
# Отключаемся
$ldap->unbind;
 
 
foreach my $entry ($ldapSearch->entries) {
    print $entry->get_value('sAMAccountName'), " -> ";
    print $entry->get_value('displayName'), "\n";
    print "e-mail: ", $entry->get_value('mail'),  "\n\n";
}
Персональные инструменты