Для подключения только для чтения подойдёт любая учётка, для записи нужны привилегии администратора.
<?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 - ключи мелкими буквами.
#!/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"; }