Локальные проблемы php ldap_bind ()

У меня есть сценарий, который должен отображать список пользователей в Active Directory моей компании.

Для этого я использую специальную учетную запись AD (которая авторизована для поиска в AD). Я делаю это так:

$ldapResource = ldap_connect('ldap://*********');
ldap_set_option($ldapResource, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapResource, LDAP_OPT_REFERRALS, 0);

ldap_bind($ldapResource, "CN=My company standard Account, OU=*******", "account_password");

Затем я ищу

ldap_search(...)

При этом проблема в том, что когда я запускаю сценарий локально (с помощью xampp), я теряю права своей текущей учетной записи (например, доступ в Интернет, потому что стандартная учетная запись не имеет этого права?).

Если я хочу снова войти в систему как мой настоящий профиль, мне нужно запустить сценарий, который аутентифицирует меня (ldap_bind ()) с моими собственными учетными данными.

Есть ли какое-нибудь решение, чтобы не потерять мою основную аутентификацию? Следует ли мне провести исследование по-другому?

На какой ОС вы работаете? Это в Windows?

heiglandreas 12.09.2018 04:51
0
1
146
1

Ответы 1

Попробуйте пример ниже, чтобы увидеть, работает ли он. В нем перечислены все пользователи. Измените переменные по своему усмотрению. Проверьте это для получения дополнительных примеров.

$username = 'yowyow';
$password = '123123';
$server = '192.168.32.4';
$domain = '@yourdomain.local';
$port = 389;

$connection = ldap_connect($server, $port);
if (!$connection) {
    exit('Connection failed');
}

// Help talking to AD
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0);

$bind = @ldap_bind($connection, $username.$domain, $password);
if (!$bind) {
    exit('Binding failed');
}

// This is where you can do your work
$unit = 'sales';
$distinguished_name = "OU=$unit,DC=yourdomain,DC=local";
$filter = "(sAMAccountName=*)";

$search = ldap_search($ldap_connection, $distinguished_name, $filter);
$total_record = ldap_count_entries($ldap_connection, $search);
$returned = ldap_get_entries($ldap_connection, $search);

if ($total_record > 0) {
    print_r($returned);
}
// End

ldap_close($ldap_connection);

на самом деле проблема не в поиске, мой скрипт отлично работает для вывода списка пользователей. Настоящая проблема заключается в том, что я теряю аутентификацию Windows, когда скрипт запускается на localhost (например, после ldap_bind () я теряю доступ в Интернет, потому что у используемой учетной записи нет этой привилегии)

Dcp 10.09.2018 13:31

Другие вопросы по теме