аутентификация openldap php5 - сравнение пароля

Я пытаюсь снова пройти аутентификацию на созданном мной сервере ldap. Пароль пользователя хранится в ldap в виде хэша sha. Однако, когда я пытаюсь получить доступ к атрибуту userPassword, его не существует. Я должен войти в систему как менеджер. Я предполагаю, что это не очень хорошая идея на рабочем сервере. Есть ли способ обойти это?


person Ageis    schedule 31.07.2011    source источник


Ответы (1)


Возвращать поле пароля не имеет смысла. Вы можете просто аутентифицироваться на сервере ldap с заданными учетными данными.

см. этот пример (ссылка здесь: http://php.net/manual/en/ref.ldap.php)

<?php

$user = 'bob';
$password = 'zhlob';
$host = 'myldap';
$domain = 'mydomain.ex';
$basedn = 'dc=mydomain,dc=ex';
$group = 'SomeGroup';

$ad = ldap_connect("ldap://{$host}.{$domain}") or die('Could not connect to LDAP server.');
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);
@ldap_bind($ad, "{$user}@{$domain}", $password) or die('Could not bind to AD.');
$userdn = getDN($ad, $user, $basedn);
if (checkGroupEx($ad, $userdn, getDN($ad, $group, $basedn))) {
//if (checkGroup($ad, $userdn, getDN($ad, $group, $basedn))) {
    echo "You're authorized as ".getCN($userdn);
} else {
    echo 'Authorization failed';
}
ldap_unbind($ad);
?>
person john    schedule 31.07.2011