apache — запрос AD с использованием ldap / Stack Overflow

Исходная информация

Я пытаюсь выяснить, как запросить у нашего активного сервера каталогов информацию о пользователях / группах через веб-приложение php. (Давайте назовем это «приложением виджетов». В конечном счете, я собираюсь использовать эту информацию, чтобы попытаться «увидеть», какие поля / данные доступны в AD для проверки / использования в качестве части аутентификации, помимо только имени пользователя и пароля. Например, я хочу разрешить людям только в определенных группах AD … и т. д.

Я использую это в качестве примера:http://php.net/manual/en/ldap.examples-basic.php

проблема

К сожалению, я получаю ноль результатов … даже когда я использую свое имя пользователя AD в качестве фильтра.

вот как выглядят мои результаты:

Connecting ...connect result is Resource id #26
Binding ...Bind result is 1
Searching for (sn=myusername*) ...Search result is Resource id #27

Getting entries ...
Data for 0 items returned:

Что я пробовал до сих пор:

У нас есть другое веб-приложение, которое работает на том же веб-сервере, что и приложение для виджетов. Это другое приложение настроено так, что apache будет запрашивать учетные данные AD. Я знаю, что это работает, потому что, когда я пытаюсь аутентифицировать себя в этом дополнительном приложении, мои учетные данные AD аутентифицируются, и я получаю разрешение, необходимое для использования приложения.

Поэтому я начал изучать apache conf и попытался убедиться, что мой PHP-код использует те же значения.

Код

Вот код PHP, который в настоящее время не работает:

public function ldap_test() {
echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ds=ldap_connect("10.11.11.1111");  // must be a valid LDAP server!
echo "connect result is " . $ds . "<br />";

if ($ds) {
echo "Binding ...";
//$r=ldap_bind($ds);
$r=ldap_bind($ds,"CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org", "somepasswordvalue");
// read-only access
echo "Bind result is " . $r . "<br />";
echo "Searching for (sn=myusername*) ...";

// Search surname entry
$sr=ldap_search($ds, "CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org", "somepasswordvalue", "(sAMAccountName=myusername*)");
echo "Search result is " . $sr . "<br />";

echo "Number of entries returned is " . ldap_count_entries($ds, $sr) . "<br />";

echo "Getting entries ...<p>";
$info = ldap_get_entries($ds, $sr);
echo "Data for " . $info["count"] . " items returned:<p>";

for ($i=0; $i<$info["count"]; $i++) {
echo "dn is: " . $info[$i]["dn"] . "<br />";
echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />";
echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />";
}
echo "Closing connection";
ldap_close($ds);
} else {
echo "<h4>Unable to connect to LDAP server</h4>";
}
}

Конфигурация Apache, которую я использовал для создания своего кода PHP: (эта конфигурация работает и правильно запрашивает мои учетные данные AD и правильно аутентифицируется)

<AuthnProviderAlias ldap ldap-test>
AuthLDAPBindDN "CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org"AuthLDAPBindPassword somepasswordvalue
AuthLDAPURL "ldap://10.11.11.111/ou=Accounts,dc=td,dc=ab,dc=org?sAMAccountName?sub?(objectClass=*)"AuthLDAPMaxSubGroupDepth 5
</AuthnProviderAlias>

Это первый раз, когда я пытался выполнить аутентификацию AD в PHP, и я не тот, кто управляет нашими реализациями AD, поэтому я довольно зеленый.
Если у вас есть предложения для меня, пожалуйста, не стесняйтесь.

Спасибо

0

Решение

Проблема была в том, что я фильтровал по общему имени. Обратите внимание на это:

 AuthLDAPBindDN "CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org"

Так что, чтобы исправить это, я просто должен был удалить это из фильтра, и это сработало.

 AuthLDAPBindDN "OU=Services,OU=Accounts,DC=td,DC=ab,DC=org"
0

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

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

По вопросам рекламы [email protected]