У меня есть PHP-скрипт, который связывает LDAP, связывает и выполняет поиск. Он работает очень хорошо с большинством серверов Active Directory, однако у одного из наших клиентов есть проблема. Сценарий возвращается
Strong(er) authentication required.
при попытке ldap_bind.
Все поиски, которые я сделал, привели меня к двум возможным проблемам:
LDAP_OPT_PROTOCOL_VERSION
в 3
– что я делаю и делал раньше, так что это не может быть моей проблемой. Какие другие причины могут быть для этой ошибки?
На сервере Active Directory требовался SSL …
Вы должны использовать ldaps://
если это требуется сервером Active Directory. Если это проблема с недопустимым центром сертификации, вы можете игнорировать действительность в окнах, выпуская
putenv('LDAPTLS_REQCERT=never');
в вашем php-коде. В /etc/ldap.conf
* nix вам необходимо отредактировать файл /etc/ldap.conf
чтобы он содержал
TLS_REQCERT never
Для других распространенных проблем вы можете ссылаться на мой пост на PHP не удается подключиться к LDAP Oracle Directory Server Enterprise Edition
Для кода рабочего примера вы можете посмотреть: проблемы с безопасным привязкой к Active Directory с помощью PHP
У меня была такая же проблема, и, похоже, в моем bind_rdn
была опечатка, поэтому убедитесь, что учетные данные верны.
Сообщение «Сильная проверка подлинности (er)» появляется также, если вы попытаетесь обновить объект LDAP, используя:
Без вызова функции bind с дополнительными параметрами:
string $bind_rdn = NULL [, string $bind_password = NULL
Этот код не будет работать:
$ldap = ldap_connect($ldap_url); ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); $bind = ldap_bind($ldap); $userdata=array(); $userdata['userattribute'][0]='test'; ldap_modify ($ldap, "cn=myuser,dc=example,dc=com", $userdata);
Этот код работает, обратите внимание на другую функцию вызова функции bind:
$ldap = ldap_connect($ldap_url); ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); $bind = ldap_bind($ldap,'cn=admin,dc=example,dc=com','secretpassword'); $userdata=array(); $userdata['userattribute'][0]='test'; ldap_modify ($ldap, "cn=myuser,dc=example,dc=com", $userdata);