2015-07-20 3 views
0

Я пытаюсь написать блестящую службу php, которая позволит пользователям изменять свои пароли. Я пришел к использованию функции ldap_modify. Все в порядке, я передаю dn и новый пароль пользователя (или его хэш), и пользователь может успешно войти в систему после этого.изменить ldap пароль с phpldap принимая во внимание назначенные политики

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

Почему не ldap проверяет пароли в соответствии с назначенными политиками паролей?

В качестве временного решения можно прочитать запись политики и проверить длину вручную ...

+0

Шаг 1. Просмотрите свои политики и запишите, какие действия в настоящее время применяются, и соответствующим образом измените свой код. Шаг 2. Прибыль ... Но если я могу спросить, почему вы разрешаете пользователям изменять пароль (ы) через PHP? –

+0

Спасибо. Итак, вы предлагаете вручную проверять принудительные меры? В моих проектах используется авторизация LDAP, и у пользователя должна быть возможность сменить пароль –

+0

Действительно, пока. Вы можете изучить некоторые уже созданные пакеты управления LDAP, доступные в github. https://github.com/adldap/adLDAP. Выглядит многообещающе из первоначального glimpse. –

ответ

0

Существует командная строка-инструмент под названием ldappasswd (на некоторых Linux-дистрибутивах это называется slappasswd IIRC), который должен быть использован для генерации хеш паролей. Этот инструмент IIRC проверяет введенный пароль на политику паролей, установленную для данного пользователя.

Когда вы вручную изменяете значение пароля, LDAP-сервер не имеет возможности проверить его, поскольку он является атрибутом, подобным всем другим, поэтому вы можете изменить его без вмешательства сервера. И поскольку вы устанавливаете хэш как значение, LDAP-сервер не имеет никакого шанса узнать, соответствует ли пароль директивам политики паролей, поскольку он никогда не видит пароль в состоянии unhashed. Поэтому вам нужно будет проверить политику самостоятельно до хеширования пароля.

0

Решение: поэтому проблема заключалась в том, что политика, которую я тестировал, имеет атрибут pwdCheckQuality, установленный в 0, который отключил все проверки ... Вторая проблема заключалась в том, что пользователи admin в LDAP игнорировали политики паролей - мне приходилось выполнять все тесты на простых user

Смежные вопросы