Это первый раз, когда мне нужно аутентифицировать пользователей в моем PHP-приложении с помощью удаленного Active Directory. Я нашел тестовый сервер в Интернете по этой ссылке и написал несколько кодов для подключения к серверу и выполнения аутентификации в тестовом режиме:
$ldap_server = 'www.zflexldap.com';
$ldap_server_port = 389;
$ldap_username = 'guest1';
$ldap_password = 'guest1password';
$ldap_base_dn = 'ou=users,ou=guests,dc=zflexsoftware,dc=com';
$ldap_connection = ldap_connect($ldap_server, $ldap_server_port);
if ($ldap_connection === false) {
echo 'Connection failed';
} else {
echo 'Connected<br>';
}
ldap_set_option($ldap_connection , LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap_connection , LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($ldap_connection, 'uid='.$ldap_username.','.$ldap_base_dn, $ldap_password);
if ($bind) {
echo 'Successful login';
} else {
echo 'Failed login';
}
Результат выполнения этого кода:
Подключено
Успешный вход
После этого я создал настоящий сервер Active Directory на виртуальной машине и определил пользователей на этом сервере, как показано ниже:
И затем я изменил переменные соединения на эти строки:
$ldap_server = 'SERVER_IP';
$ldap_server_port = 389;
$ldap_username = 'test1';
$ldap_password = 'test1_password';
$ldap_base_dn = 'ou=users,dc=website,dc=com'; // Imagine domain as website.com on AD
Теперь, когда я хочу подключиться к серверу ldap и аутентифицировать пользователя test1
, я получаю следующий результат:
Подключено
Предупреждение: ldap_bind(): невозможно выполнить привязку к серверу: неверные учетные данные в index.php в строке 25
Ошибка входа
Я уверен, что имя пользователя и пароль верны. Я предполагаю, что проблема может быть в base_dn
, но когда я проверил настройки сервера, я не смог найти никакой ошибки в том, что я написал в своем коде.
Можете ли вы помочь мне решить эту проблему, пожалуйста?