как я могу получить ВСЕ записи LDAP? - PullRequest
5 голосов
/ 27 октября 2011

Я знаю, как связать LDAP для аутентификации, которая использует поиск, но что я могу сделать, если я хочу ВСЕ записи Полных имен ... Так как я могу получить Полные имена или электронные письма ВСЕХ людей ??

Ниже я использую привязку LDAP для аутентификации и могу искать одного человека, но что, если я хочу их всех?

<?php

// using ldap bind
$ldaprdn  = 'uname';     // ldap rdn or dn
$ldappass = 'password';  // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
    or die("Could not connect to LDAP server.");

if ($ldapconn) {

    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // verify binding
    if ($ldapbind) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP bind failed...";
    }

}

?>

Это мой код MySQL, который заполняет список HTML:

<ol>     

<?php
mysql_connect("kool", "ohjoa", "sampa") or die(mysql_error());
mysql_select_db("DBtest") or die(mysql_error());

$query = "SELECT * FROM EditOnCall"; 

$result = mysql_query($query) or die(mysql_error());


while($row = mysql_fetch_array($result)){
    echo "<li>".$row['Email']."</li>";
    echo "<br />";
}


?>

</ol>

Теперь отображается список сообщений в формате html. То, что я хочу сделать, это то же самое с LDAP, за исключением отображения полного имени всех пользователей ldap в каталоге ... МОЙ LDAP имеет только 200 человек, так что он не слишком большой.

Есть идеи?

Ответы [ 2 ]

8 голосов
/ 28 октября 2011

Привязка - это один тип запроса LDAP, а поиск - это другой тип запроса.Привязка устанавливает состояние аутентификации соединения, а при поиске используются базовый объект, область действия, фильтр и другие необязательные параметры для создания списка кандидатов, которые фильтруются и возвращаются клиенту LDAP.Состояние аутентификации соединения также будет устанавливать определенные возможности доступа, такие как, какие записи могут быть получены, сколько записей может быть найдено в поиске, сколько времени потрачено на поиск, сколько записей должно быть проверено в процессе выполнения.поисковый запрос и другие возможности.Без использования корневого DN может оказаться невозможным получить все записи в каталоге, и ваш администратор LDAP может запретить состояниям проверки подлинности DN без полномочий root получать более нескольких записей.Для получения дополнительной информации о поиске см. « LDAP: Использование ldapsearch ».Для получения более общей информации о программировании с использованием LDAP см. «LDAP: Практика программирования» .Для получения более подробной информации см. Рекомендации по поиску в LDAP .

В отношении фильтров звездочка не является подстановочным знаком в смысле, описанном (cn=*).Это называется фильтром присутствия и указывает, присутствует ли атрибут, используемый в утверждении - в данном случае cn - в записи при фильтрации списка кандидатов.Звездочку можно использовать как часть фильтра подстрок, например, (cn=abc*) или (mail=user@example*).

. В любом случае следует избегать использования фильтров подстрок, если это возможно в больших каталогах, возможно, в любом случае, запрещенобудет «тралить» каталог.

4 голосов
/ 27 октября 2011

Это не о том, как вы связываете, а о том, как вы ищете.Вам необходимо узнать о фильтрах LDAP (эта ссылка относится к AD, но всю информацию в ней можно применить к любому узлу LDAP).

Вы можете использовать * в качестве подстановочного знака вфильтр LDAP.Скажем, вы хотите получить все объекты objectClass=User, которые идентифицируются атрибутом cn из корневого контейнера с именем cn=Users - вы должны сделать это:

$searchResult = ldap_search($ldapconn,'cn=Users','(&(objectClass=User)(cn=*))',array('cn','guid'));

Единственным способом, которым путьПривязка может повлиять на этот принцип, если пользователь, которого вы используете для привязки, не имеет прав доступа к объектам, которые вы ищете в каталоге.

Если вы покажете еще немного кода именно того, что вы пытаетесь сделатьЯ отредактирую этот ответ более подробно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...