openldap auththentication php5 - сравнение пароля - PullRequest
1 голос
/ 31 июля 2011

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

1 Ответ

1 голос
/ 31 июля 2011

Возвращать поле пароля не имеет смысла. Вы можете просто пройти аутентификацию на сервере 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);
?>
...