аутентификация — PHP LDAP привязка успешно с неправильным паролем иногда

В настоящее время я интегрирую аутентификацию LDAP. Я могу подключиться к своему серверу LDAP AD и запросить данные анонимно, что нормально. Я пытаюсь аутентифицировать пользователей сейчас, и когда я ввожу свое имя пользователя и случайный пароль, он успешно завершается с ошибкой, а когда я ввожу свой реальный пароль, он успешно проходит, однако я могу ввести МОСТ моего правильного пароля, и это все еще проходит.

например.:

Username: user1
Password: RandomPassword1
(works)

Username: user1
Password: Random
(fails)

Username: user1
Password: RandomPasswo
(works???)

Так что теперь мне интересно, может быть, Active Directory не проверяет весь пароль, может, не может, или, может быть, алгоритм хеширования, который он использует, генерирует тот же хэш-код для RandomPassword1, что и RandomPasswo?

Я предполагаю, что мой вопрос заключается в том, что … но есть ли способ обеспечить его правильную аутентификацию?
Я не проверял это с другими паролями, так как у меня нет доступа к другим учетным записям, чтобы проверить это, однако он определенно работает, когда пароль — RandomPassword1 (который, как оказалось, был моим паролем, да — я изменил его сейчас)

Изменить: Мой код привязки LDAP:

function validateLoginDetails($username, $password) {
$ldap_connection = ldap_connect("server", 389);
if($ldap_connection === FALSE) {
echo "Unable to connect.";
} else {
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die("Could not set version.");
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0);
}
$r = @ldap_bind(@$ldap_connection, "uid=".$username.",ou=People,o=Foo", $password);
if(!$r) {
return false;
} else {
return true;
}
}

(Обратите внимание, что при использовании одного и того же соединения я могу перечислить всех пользователей и их информацию, и он отклоняет случайно выбранный пароль, но принимает, как я уже сказал, полузаполненный пароль. Может быть, это вариант в AD или LDAP?)

(Я также понял, что хотя я изменил свой пароль, мой новый пароль не работает, но старый пароль, RandomPassword1, все еще работает, но я предполагаю, что это потому, что, возможно, AD требуется время для обновления или что-то? Я не уверен.)

0

Решение

Я знаю, что это было давно, но у меня была та же самая «проблема», я наткнулся на ваш вопрос и выяснил, что вызывало (по крайней мере, в моем случае). Поэтому я подумал, что опишу, как я решил это для тех, кто заинтересован (хотя это, вероятно, больше не будет вас интересовать).

В моем случае я обнаружил, что это связано с тем, что пользователь, которого пытался аутентифицировать с помощью «похожего» пароля (правильный пароль минус или плюс несколько символов), зашифровал пароль с помощью метода Unix Crypt (он был на компьютере, на котором он использовался). исключительно для целей развития, так что не имеет большого значения).

Вероятно, для создания хэша использовалась только фиксированная короткая длина пароля, поэтому последние несколько символов пароля не имели значения.

Затем я установил пароль пользователя, используя более надежный метод шифрования (например, SHA-512 Crypt), и он распознал только правильный пароль, как и ожидалось.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector