Аутентификация и поиск LDAP

Я использую онлайн тестовый сервер LDAP здесь: http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/ проверить некоторый основной код LDAP.

Мне нужно аутентифицировать пользователя и получить некоторую информацию о пользователе.

Если я правильно понимаю информацию о тестовом сервере, я смогу связываться с пользователями, принадлежащими к соответствующим группам. С кодом «КАК ЕСТЬ», приведенным ниже, я могу связать без комментариев $ dn, но если я использую любой другой $ dn для аутентификации, связывание завершится неудачно.

Что я не понимаю?

Например, tesla должна принадлежать ‘ou = scholans, dc = example, dc = com’, но я не могу аутентифицировать tesla на этом DN и впоследствии не могу найти соответствующую информацию.

    $dn = 'dc=example,dc=com';
// $dn = 'ou=mathematicians,dc=example,dc=com';
// $dn = 'ou=scientists,dc=example,dc=com';

$username   = 'tesla';
$password   = 'password';
$filter     = "(uid=" . $username . ")";

$ldapDN     = 'uid=' . $username . ',' . $dn;

$ldapCONN   = ldap_connect("ldap.forumsys.com") or die("Could not connect to LDAP server.");

if ($ldapCONN)
{
ldap_set_option($ldapCONN, LDAP_OPT_PROTOCOL_VERSION, 3);

$ldapBIND = @ldap_bind($ldapCONN, $ldapDN, $password);

if ( $ldapBIND )
{

$result = ldap_search($ldapCONN, $dn, $filter) or die ("Error: ".ldap_error($ldapCONN));

$data   = ldap_get_entries($ldapCONN, $result);

echo '<pre>';
print_r($data);
echo '</pre>';

}
else
{
echo "LDAP bind failed...";
}
}

2

Решение

При использовании LDAP важно визуализировать, как организована база данных.

В принципе, все пользователи находятся в главной папке. Используйте эту папку для аутентификации вашего пользователя, иначе она не будет работать.
В этом случае основной папкой, в которой находятся все пользователи, является dc=example,dc=com, Однако большинство серверов LDAP используют основную папку, такую ​​как cn=users,dc=example,dc=com,

Почему они вообще используют папки? Что ж, это облегчает классификацию и поиск с помощью фильтра. Например, если вы хотите показывать только имена ученых, вы добавляете группу ученых в свой поисковый фильтр, например $filter = "(ou=Scientists)", Фильтр для обеих групп будет выглядеть так: $filter = "(&(ou=Scientists)(ou=Mathematicians)", Теперь сервер изучит эту папку / эти папки и отобразит только эти элементы.

Надеюсь, что это поможет, для дальнейшего понимания того, как организован сервер, я могу порекомендовать установить Apache Directory Studio. Это бесплатно скачать с их сайт, мне очень помогло!

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector