Может ли пароль LDAP изменить расширенную операцию с использованием PHP - PullRequest
4 голосов
/ 15 февраля 2012

Используя PHP, возможно ли выполнить расширенную операцию изменения пароля LDAP, как указано в RFC 3062 ? Схема хеширования паролей в каталоге LDAP, с которым я работаю, может периодически меняться, поэтому я понимаю, что не могу хэшировать новый пароль в соответствии с конкретной схемой, например, {SHA}, вместо этого мне нужно использовать расширенную операцию и пусть каталог делает хеширование. Это верно? Страница справки для ldap_set_option предполагает, что это возможно, но я точно не могу найти ни одного примера кода в Интернете. Может быть, я просто теряю Google-фу. ТИА

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

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

Если PHP поддерживает расширенные операции и расширенные ответы, тогда поддерживается расширенная операция изменения пароля (которая требует существующего пароля и может генерировать пароль, если новый пароль не предоставлен).Я не эксперт по PHP, но я считаю, что set_option можно использовать для элементов управления (которые присоединены к операции), но я не знаю, поддерживает ли PHP расширенные операции LDAP.

0 голосов
/ 15 февраля 2012

Если вы обрабатываете шифрование пароля на своей стороне, то да, вы можете хэшировать его в соответствии с тем методом шифрования, который вам нужен.

Для MD5: $ pass_ldap = '{MD5}'. base64_encode (pack ('H *', md5 ($ pass)));

Для SHA-1: $ pass_ldap = '{SHA}'. base64_encode (pack ('H *', sha1 ($ pass)));

Затем вы будете использовать ldap_modify для обновления пароля существующего пользователя или ldap_add для добавления нового пользователя с зашифрованным паролем.

Я сделал это, и я думаю, что сервер LDAP использует значение "{}", чтобы определить, какой формат используется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...