Структура, которую вы хотите видеть, называется деревом каталогов и состоит из LDAP «записей» (не папки).
Вы должны иметь возможность собирать записи из своего каталога при условии, что предоставленные вами полномочия достаточны. Для этого вам нужна клиентская библиотека, вы можете использовать Perl LDAP.
Используя эту библиотеку вы могли бы сделать что-то вроде:
use Net::LDAP;
# Init connection and bind to the directory.
$ldap = Net::LDAP->new('ldaphost.example.com') or die "[email protected]";
$mesg = $ldap->bind ($binddn, password => $password);
# Perform a search on the whole tree below (and including) the base object.
$mesg = $ldap->search(base => $basedn);
# Handle error
$mesg->code && die $mesg->error;
# Display results
foreach $entry ($mesg->entries) { $entry->dump; }
$mesg = $ldap->unbind;
код, указанный выше просто напечатать записи на стандартный вывод ($ entry-> дамп).
$binddn
является dn для аутентификации. Если вам дано простое имя пользователя, которое не является dn, например «имя пользователя», а не что-то вроде uid=username,dc=example,dc=com
, это, вероятно, означает, что вы имеете дело с Active Directory. В этом случае вы можете попытаться связать с binddn, который соответствует следующему шаблону: '[email protected]'
.
basedn
является dn записи базового объекта, поиск выполняется на всем дереве ниже (и включает) базовый объект. Вам нужно будет указать действительную базу dn.
Вы можете попытаться угадать, какую базу использовать dn. Компоненты домена (dc) обычно соответствуют FQDN, но не гарантируется, что он приводит к действительной базе dn (например, 'ldaphost.example.com'
даст 'dc=example,dc=com'
). Однако вы можете запросить у сервера информацию RootDSE и получить namingContexts
(или defaultNamingContext
если таковые имеются) и использовать одну из них в качестве базового дп:
$ldap->search(base => '', attrs => 'namingContexts');
Это говорит, что если вы действительно хотите, чтобы отобразить дерево каталогов, вы лучше пойти с LDAP-проводником, например Apache Directory Studio.
Обратите внимание, что LDAP не ограничивается хранением информации в строгих структурах «дерева», он просто должен уважать номенклатуру дерева каталогов (DIT).
Какой тип справочника это? Как выглядит предоставленное имя пользователя? – EricLavault
Я получу информацию о пользователе. Я не знаю никакой другой информации. Мой вопрос заключается в том, должен ли я спрашивать об этом у клиента или есть ли способ увидеть иерархию каталогов LDAP-сервера. –
. Было бы лучше, если бы вы знали, с каким типом каталога вы должны работать, особенно если вам не нравится LDAP .. вы можете угадать, как только вам удалось прочитать некоторые записи. Вам удалось связать и выполнить поиск? – EricLavault