@MixanMM

Как проверить, состоит ли пользователь в группе Active Directory?

Добрый день, я хочу сделать небольшую страницу, которая будет проверять состоит ли пользоватль в группе , и если да, тогда загружать страницу дальше. Столкнулся с проблемой - не загружаются даже список пользователей, просто возвращается пустое значение в $result. Подскажите с чем может связано быть?
<?php

//ip адрес или название сервера ldap(AD)

//Порт подключения

$ldapport = "389";

//Полный путь к группе которой должен принадлежать человек,

//что бы пройти аутентификацию.

$memberof = "CN=ОТДЕЛ 1,OU=Security,OU=GROUPS,OU=GTN, DC=g,DC=group,DC=local";

//Откуда начинаем искать

$base = "OU=Work,OU=USERS,OU=GTN,DC=g,DC=group, DC=local";

//Собственно говоря фильтр по которому будем аутентифицировать пользователя

$filter = "sAMAccountName=";

//Если прилетели данные пользователя, то проверить его используя LDAP

$password = $_POST['password'];

$username = $_POST['username'];

//подсоединяемся к LDAP серверу

$ldap = ldap_connect("g.group.local") or die("Cant connect to LDAP Server");

//Включаем LDAP протокол версии 3

echo "connect to LDAP". "<br />";;

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3) or die("Cant SELECTION LDAP Server");

if ($ldap)

{

// Пытаемся войти в LDAP при помощи введенных логина и пароля

$bind = ldap_bind($ldap,$username,$password);

if ($bind) //логин

{

echo "Autorize as : ". $_SERVER['AUTH_USER']. "<br />";;

// Проверим, является ли пользователь членом указанной группы.

//$result = ldap_search($ldap,$base,"(&(memberOf=".$memberof.")(".$filter.$username."))") or die ("NO object"); //поиск по группе ( тут не работало, и поэтому решил отобразить всех пользоваелей из группы)

$result = ldap_search($ldap,$memberof ,"member=*") or die ("NO object"); //вывести всех пользователей

echo "searching";

// Получаем количество результатов предыдущей проверки

$result_ent = ldap_get_entries($ldap,$result) or die("Error1");

echo "Res <".$result. "<br />";

}

else

{

die('Login failed');

}

}

// Если пользователь найден, т.е. результатов больше 0 (1 должен быть)

if ($result_ent['count'] != 0)

{

// тут код для запоминания авторизаЦии

echo "1";

}

else

{

echo "0";

}

?>
  • Вопрос задан
  • 473 просмотра
Пригласить эксперта
Ответы на вопрос 1
@NortheR73
системный инженер
$result = ldap_search($ldap,$memberof ,"member=*") or die ("NO object")

по-моему, LDAP-фильтр должен быть (&(objectClass=user)(memberof=$memberof))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы