У меня проблема с моим PHP-скриптом:
PHP Предупреждение: ldap_bind (): Не удается привязываться к серверу: не удается связаться с сервером LDAP ….
- Пользователи LDAP и веб-приложения
- Как единый вход (SSO) работает с PHP + Apache в Active Directory для прозрачной проверки подлинности?
- LDAP Bind похоже возвращает true с пустым паролем
- Аутентификация пользователя с помощью LDAP с PHP
- Как выполнить привязку LDAP SASL к Active Directory с использованием GSS-API в PHP из Windows?
ldap_connect()
говорит «Успех», но ldap_bind()
не удается, как исправить эту проблему?
Соединение открывает сеанс. Bind – это то, что на самом деле аутентифицирует вас. Таким образом, вы подключились, но не вошли в систему с действительными учетными данными.
Если эта ошибка на RHEL7 (CentOS7) из-за ограничений, запрещающих SELinux, может использоваться HTTPD.
Порты LDAP 389 и 686 не включены в список разрешений по умолчанию, вы можете разблокировать:
setsebool -P httpd_can_network_connect 1
Вы можете проверить ограничение, попробовав сокет на сервере LDAP:
fsockopen('LDAP-Server-IP', 389);
Он предоставит «Permission Denied», показывая, что он заблокирован, а не учетные данные.
Также проверьте файл журнала аудита SELinux для блокировки других вещей.
У меня нет опыта, который соответствует тому, что я читаю здесь. Я пытался
$ds=ldap_connect("goblydeegook",336); if($ds) echo "successful";
и я получаю «успешный» ответ
Иногда проблема будет зависеть от вашей среды (Linux, Windows …) Попробуйте связать с одним из этих параметров:
$connect = ldap_connect("ldap://".$ldap_server); $auth_user = 'CN=XXX,OU=XXX,DC=XXX,DC=com'; $bind = ldap_bind($connect, $auth_user , $auth_pass);
или
$bind = ldap_bind($connect, 'YourDomaine\\'.$auth_user , $auth_pass);
функция ldap_bind () запрашивает три параметра:
Идентификатор ресурса 1.a
2.a rdn
3. пароль, связанный с rdn
rdn и пароль являются необязательными
если вы связываете, используя только идентификатор ресурса: –
/ * $ ldap = ladap_connect ( имя хоста , * порт *);
ldap_connect () возвращает идентификатор ресурса * /
ldap_bind () возвращает логическое значение (true или false)
ldap_bind ($ ladp); // annonymous bind
$ lb = ldap_bind ($ ldap, "uid = xxx, ou = something, o = hostname.com", "password"); // используется для аутентификации
это должно работать, если не тогда, когда вы используете недопустимые учетные данные.