Аутентификация с помощью OpenLDAP из PHP - PullRequest
0 голосов
/ 07 октября 2018

Использование CentOS 7.5, Apache 2.4.6.Бег в ВМ.Нет SSL.

Я следовал https://linuxhostsupport.com/blog/how-to-install-ldap-on-centos-7/ и настроил OpenLDAP.

Из PHP, когда я делаю анонимное связывание и выдаю ldap_search, я вижу запись для пользователя.

При связывании с ИД пользователя и паролем функция завершается ошибкой.

PS: В случае ввода неверного пароля, как изменить пароль для пользователя, определенного в LDAP, с использованием файла ldif?

Вот код:

$ds = ldap_connect("localhost");  // must be a valid LDAP server!
echo "LDAP Server connection result is " . $ds . "<br />";

if ($ds) { 
  echo "Binding ..."; 
  $r=ldap_bind($ds);     // this is an "anonymous" bind, typically
                       // read-only access
echo "Bind result is " . $r . "<br />";

echo "Searching for (sn=*) ...";
// Search surname entry
$sr=ldap_search($ds, "o=Sapphire, ou=karachi", "sn=*");  
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 "Binding as $userid ...  ";
if( $r = ldap_bind($ds, "uid=hussain,ou=People,dc=karachi,dc=sapphire", $password) ){
  echo "Userid or Password is valid";
}else{
  echo "Userid or Password is not valid";
}

echo "Closing connection";
ldap_close($ds);

} else {
  echo "<h4>Unable to connect to LDAP server</h4>";
}

1 Ответ

0 голосов
/ 08 октября 2018

Нашел ответ.Мне нужно было добавить

ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);

перед выдачей привязки.

...