LDAP-поиск

Kuzya

Новичок
LDAP-поиск

Здравствуйте. Не совсем хорошо (а точнее почти никак) разбираюсь в работе с ActiveDirectory через PHP. Суть моей задачи в том что бы при выходе авторизовать пользователя и в сессию положить его имя, id и группы в которые он входит. Используя LDAP я смог нормально подключится и проверить существования пользователя (функцией ldap_bind). А когда стало нужно извлечь данные о пользователе то я запоролся. Вот используемый код :
(Имя пользователя "one", пароль "123abc!", имя машины "dipl", имя домена "diplom.local")
PHP:
$ldap_addr = "192.168.244.5";
$g_res = ldap_connect($ldap_addr);
if($g_res)
{
	print "Connected to ladp-server<br />";
} else {
	print "can`t connect to addr {$ldap_addr}";
	exit;
}

$bind_user = ldap_bind($g_res, "[email protected]", "123abc!");
if ($bind_user)
{
    print "User binded!<br />";
} else {
	print "can`t bind user!<br />";
	exit;
}

$sr=ldap_search($g_res,"dc=dipl,dc=diplom,dc=local", "(samaccountname=one)", array("*") );
$info = ldap_get_entries($g_res, $sr);
var_dump($info);
Всё хорошо работает до вызова ldap_search. Проблема в строке "dc=dipl,dc=diplom,dc=local". Если честно то я даже не знаю что туда писать. Нашёл расшифровки для всего того что можно в ней указать (o,cn,dc и т.д.) но не знаю что в эти параметры поместить и какие из них обязательны. Я знаю имя машины и домена, их и пишу. Но при любом случае функция выдаёт ошибку:
"Warning: ldap_search() [function.ldap-search]: Search: No such object in ... on line ..."
Помогите пожалуйста, второй день мучаюсь.
P.S. в редакторе запросов AD нужный мне запрос выглядит вот так: "(&(objectCategory=person)(objectClass=user)(name=one))"
 

DiMA

php.spb.ru
Команда форума
Все запросы написаны верно.

Попробуй $ldaphost = "ldaps://ldap.example.com/";
 

Kuzya

Новичок
Неа, не прокатило =( Пишет в начале что подключение успешно,а потом выдаёт ошибку(ldap_bind):
Unable to bind to server: Can't contact LDAP
Может поможет следующая информация - на сервере Win2003, домен создан с нуля и единственное что туда добавлено это пользователь one.

-~{}~ 06.04.09 18:37:

Проблема решилась =) Помогли на античате. Скачал программу Softerra LDAP Browser, добрался до нужной ветки каталогов и посмотрел свойства. В итоге видоизменил поиск вот так:
PHP:
$sr=ldap_search($g_res,"CN=web_admin,CN=Builtin,DC=diplom,DC=local", "(objectClass=*)", array("*") );
Сейчас просто методом подбора найду всё что мне нужно =)

-~{}~ 07.04.09 16:38:

Всё, сделал окончательно. Вдруг кому пригодится. Вот запрос:
$sr=ldap_search($g_res,"CN=Users,DC=diplom,DC=local", "samaccountname=one", array("*") );
показываем все данные по пользователю указанного домена (diplom.local) =)
 

Fault

Новичок
Народ. Нужна ваша помощь. Я новичек в этом деле. Дело обстоит так. Вот код

<?php
$ldaphost = "ldap://vihor.vihor.local";
$ldapconn = ldap_connect($ldaphost);

if($ldapconn)
{
echo("Подключение установлено!<br>");
echo("$ldapconn<br>");
}
else
{
echo("Неа, не получается...<br>");
}

$ldaprdn1 = "uid=panin_d,ou=users,ou=vt,dc=vt,dc=local";
$ldaprdn2 = "ou=users,ou=vt,dc=vt,dc=local";
$ldaprdn3 = "[email protected]";
$ldaprdn4 = "ou=vt,dc=vt,dc=local";
$ldappass = "123";

$ldapbind = ldap_bind($ldapconn, $ldaprdn1, $ldappass);
if ($ldapbind) { echo "Привязка прошла успешно! $ldaprdn1"; } else { echo "Не удается привязаться к каталогу... $ldaprdn1"; }

$ldapbind = ldap_bind($ldapconn, $ldaprdn2, $ldappass);
if ($ldapbind) { echo "Привязка прошла успешно! $ldaprdn2"; } else { echo "Не удается привязаться к каталогу...$ldaprdn2"; }

$ldapbind = ldap_bind($ldapconn, $ldaprdn3, $ldappass);
if ($ldapbind) { echo "Привязка прошла успешно! $ldaprdn3"; } else { echo "Не удается привязаться к каталогу...$ldaprdn3"; }

$ldapbind = ldap_bind($ldapconn, $ldaprdn4, $ldappass);
if ($ldapbind) { echo "Привязка прошла успешно! $ldaprdn4"; } else { echo "Не удается привязаться к каталогу...$ldaprdn4"; }

ldap_close($ldapconn);

?>

Я не могу привязаться к папке. Ошибка такая: Unable to bind to server: Protocol error in... прошу помощи.

-~{}~ 24.04.09 16:02:

http://s57.radikal.ru/i158/0904/15/40342e9d1ccc.jpg вот ссылка скришота ldap-каталога.
 

sergadm

Новичок
Может поможет следующая информация - на сервере Win2003, домен создан с нуля
я бы рекомендовал для 2003 использовать

PHP:
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
так как без 3 протокола функции поиска с 2003 работают некорректно. только учтите, что данные будут возвращатся в уникоде
 
Сверху