Мне интересно, как пройти аутентификацию на ApacheDS в PHP. Я получаю «Неверные учетные данные», когда пытаюсь войти в систему как пользователь в группе. Я могу войти в систему как «uid = admin, ou = system», но если я попробую «uid =, ou = Customers, ou = system», он вернет «Invalid Credentials».
Важно отметить, что это не полный DN записи. Это больше похоже на «uid = … + gn = … + …, ou = потребителей, ou = системы». Я могу найти и найти это значение очень хорошо, когда связаны с администратором и учетной записью API.
Как связать пользователя только для проверки подлинности и получения информации о нем (например, об остальных его атрибутах и дочерних элементах их записи? Вот что я делаю и терплю неудачу.
$dn = ldap_connect($serveraddress,10389);
$bn = ldap_bind("uid=".$user.",ou=consumers,ou=system");
var_dump($bn);
var_dump(ldap_error($dn);
Спасибо за любую помощь, которую вы можете предоставить.
Редактировать: Итак, я получил дальше. Почему это ошибка протокола?
$ds=ldap_connect("192.168.1.126",10389); // must be a valid LDAP server!
if ($ds) ldap_bind($ds,"uid=apiaccess,ou=system",...);
else die("!Can't connect to server");
$userid = md5($user);
$results = ldap_get_entries($ds,ldap_search($ds,"ou=consumers,ou=system","(uid=".$userid.")"));
$result = $results[0]["dn"];
echo $result;
if ($ds) ldap_bind($ds,$result,$pass);
else die("!Can't connect to server");
var_dump(ldap_error($ds));
Вы должны сказать PHP для использования LDAPv3.
Прежде чем вызывать ldap_bind, добавьте следующий вызов:
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
Других решений пока нет …