Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд

Php ldap bind


(PHP 4, PHP 5, PHP 7)

ldap_bind — Привязать к LDAP директории


Связывает LDAP-директорию с указанным RDN и паролем.

Список параметров

Идентификатор ссылки LDAP, возвращенный ldap_connect() .

Если bind_password не определен, то будет попытка анонимной привязки. Также для анонимной привязки можно оставить пустым bind_rdn , как определено в https://tools.ietf.org/html/rfc2251#section-4.2.2

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.


Пример #1 Пример использования привязки LDAP

Пример #2 Использование анонимной привязки LDAP

Смотрите также

  • ldap_bind_ext() — Привязать к директории LDAP
  • ldap_unbind() — Разорвать привязку к директории LDAP

User Contributed Notes 39 notes

if you can’t bind to active directory with the error «49: Invalid Credentials», you can get the extended error output from the ldap_get_option function, using the option: LDAP_OPT_DIAGNOSTIC_MESSAGE. Unfortunately php hasn’t defined this by default, but it’s value is 0x0032.

This is useful if a user must change their password at first login (Data: 773), or if their account has expired on the network (Data: 532).

Or something to that effect..

It took me a while to work this one out, so i figured i’d share my results..

I couldn’t get ldap_bind to work on an ldaps connection until I followed some instructions about creating an ldap.conf file. I don’t see these instructions anywhere on the php site. Maybe they’re on the OpenLDAP site, but I thought it would be useful to have here as well. Credit goes to a dude known as ‘LRM’, and I found my solution here: http://lists.horde.org/archives/sork/Week-of-Mon-20040503/001578.html

My setup is XAMPP on Win XP.
###### ApacheFriends XAMPP (basic package) version 1.6.3a ######

+ Apache 2.2.4
+ MySQL 5.0.45
+ PHP 5.2.3 + PHP 4.4.7 + PEAR
+ PHP-Switch win32 1.0 (please use the «php-switch.bat»)
+ XAMPP Control Version 2.5 from www.nat32.com
+ XAMPP Security 1.0
+ SQLite 2.8.15
+ OpenSSL 0.9.8e
+ phpMyAdmin 2.10.3
+ ADOdb 4.95
+ Mercury Mail Transport System v4.01b
+ FileZilla FTP Server 0.9.23
+ Webalizer 2.01-10
+ Zend Optimizer 3.3.0
+ eAccelerator for PHP 5.2.3 (comment out in the php.ini)

1. create C:OpenLDAPsysconfldap.conf (Yes, it MUST be this path because it’s hard-coded in the dll)
2. put this line at the top:

3. Save, stop/start apache.

The reason is, I think, because it doesn’t understand the certificate, so this directive tells it to not bother checking it. I guess that could be unsafe in some cases, but in my case I’m confident with the server I’m connecting to.

My connection code was as follows (nothing new here, I don’t think):

Good luck! LDAPS can be a real bitch.

When using Active Directory 2003 (possibly also 2000) you can’t search anonymously so you have to bind with a (known) user and password. Or else you will get an Search operations error. I also can confirm that an empty password bind succeeds! So test for an empty password first!

Some excellent information is found here:

Note that you have to specify the protocol version prior to making a call to ldap_bind, when the server is expecting LDAP protocol version 3. If you do not, you will receive a warning and fail to bind, such as:

ldap_bind(): Unable to bind to server: Protocol error

In order to avoid this, make this call:

Where $ds is the result returned by ldap_connect(. );

If you are still having trouble after following all the instructions on the Web to get LDAPS to work, here’s what worked for me:

I was trying to do LDAPS connection (our LDAP server was using port 40636) by running following command:

This didn’t work for days till I changed it to the following format:

Hope it’ll help some out there.

A number of examples and implementations of authentication schemes which use LDAP simple binds to authenticate users fail to properly sanitize user-submitted data. This can allow for an anonymous user to authenticate to a web-based application as an existing user. Provided below is a brief description and example of how this vulnerability can arise. For more detailed information please visit the links at the bottom of this posting.

The bind operation of LDAP, as described in RFC 4513, provides a method which allows for authentication of users. For the Simple Authentication Method a user may use the anonymous authentication mechanism, the unauthenticated authentication mechanism, or the name/password authentication mechanism. The unauthenticated authentication mechanism is used when a client who desires to establish an anonymous authorization state passes a non-zero length distinguished name and a zero length password. Most LDAP servers either can be configured to allow this mechanism or allow it by default. Web-based applications which perform the simple bind operation with the client’s credentials are at risk when an anonymous authorization state is established. This can occur when the web-based application passes a distinguished name and a zero length password to the LDAP server.
This is commonly encountered when no password is provided from the client to the web-based application. This situation is described in some of the postings found below. For this situation, the recommendations found in other postings is sufficient to prevent authentication bypass.
However, no prior postings at php.net describe a situation in which a client may pass a distinguished username and a password of non-zero length to the web-based application which results in an anonymous authorization state. Below is an example of this situation.

I use PHP 7.1.*. In this version ldap_bind will throw a RuntimeException if it fails to bind. I’ve tried with wrong host name, correct host and wrong password, correct host and invalid DN syntax. All fail conditions seems to throw RuntimeException.

So this function probably doesn’t return false.

Due to a bug in PHP 5.3 you may have to place the ldap.conf in the root of all your drives (I had to place it on D:).

If you’re using SSL (e.g. ldaps) and ldap_bind is throwing ‘Unable to bind to server:’ errors, check that the hostname used in the ldap_connect matches the ‘CN’ in the SSL certificate on the LDAP server. For example:

You can check your LDAP server’s SSL cert using Openssl utility (Linux) — look for the ‘Subject’ line:

$ openssl x509 -in /etc/pki/tls/certs/ldap01.crt -text -noout
Subject: C=XY, ST=My State, L=My City, O=My Org, CN=ldap01/emailAddress=me@domain.com

I recently applied some updates to my system (now Centos 5.7 and PHP 5.3.6) and started having this issue with PHP scripts that had been fine previously where I was simply using the IP address of the server. Replacing the IP address with the hostname fixed my issue.

Читать еще:  Matlab легенда графика

After a lot of trail and error i’ve found the way to authenticate to apple’s Opendirectory (snow leopard server) and thought it maybe useful to share.

GnuTLS and SChannel (Microsoft) implementations are not (yet) compatible for TLS 1.2 negotiation during LDAPS binding (when binding with Microsoft Windows 2012R2 server).

The trick is to disable TLS1.2 before using LDAP functions:

I had a problem doing a ldap_bind over SSL against Active Directory. The server kept telling me: ‘Unable to bind to server:’. To solve this (OS: CentOS 6) make sure that /etc/openldap/ldap.conf has this line:

had to do a bunch of research on this, but it does work, once config’d correctly.

using Apache/2.2.3 (Win32) mod_ssl/2.2.3 OpenSSL/0.9.8b
PHP PHP Version 5.1.5-dev

ldap_bind was getting «81 Can’t contact LDAP server» which was really annoying, since the connection worked fine without «ldaps»

$ldapconnect = @ldap_connect( $connection_string );

well, actually the bind was really the one failing.

$bind = ldap_bind($ldapconnect, $client, $this->objSecurityLogin->Password);

many attempts to determine until i smartened up and turned on the trace level:

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

Пример работы с LDAP-каталогом с помощью php API

Левинца Егор, 06 апреля 2012 года.

В порядке эксперимента, а также чтобы оказать помощь человеку в его затруднении, решил написать небольшую утилитку для отображения пользователей (а точнее, учётных записей пользователей), хранящихся в каталоге LDAP, по группам. Эксперимент состоял в том, чтобы обратиться к каталогу и получить из него данные через php API, чего я раньше не делал. Зная общие принципы взаимодействия с LDAP-каталогами и имея опыт написания подобных программ на perl API (с использованием модуля Net::LDAP), сделать это оказалось несложно. Все же я решил описать свою работу — возможно, она поможет кому-нибудь в разработке php-программ, взаимодействующих с LDAP-каталогом.

Исходные данные: имеется каталог (базовый DN dc=mycompany,dc=ru) со «стандартной» структурой для интеграции с samba: сведения об учётных записях пользователей хранятся в ветке ou=Users,dc=myconpany,dc=ru, сведения о группах пользователей — в ветке ou=Groups,dc=mycompany,dc=ru. Основная задача: отобразить нестандартную древовидную структуру: на первом уровне список групп, на втором — принадлежащие этим группам пользователи. Факультативная задача: при выборе пользователя из списка вывести некоторые сведения по нему.

Для упрощения примера подразумевается, что группы строятся на структурном объектном классе posixGroup , атрибут членства в группе — memberUid , значение которого совпадает с атрибутом uid учётной записи пользователя. Если у Вас за членство в группах и учётные записи пользователей отвечают другие атрибуты — измените код программы под Ваши настройки.

LDAP — относительно простой протокол с небольшим количеством операций. В нашем примере мы не собираемся изменять содержимое каталога (осуществляем доступ только для чтения), поэтому вся работа с каталогом будет выполнена за 4 операции: соединение с сервером каталога (connect), подключение к каталогу (bind), выполнение поиска необходимых нам данных (search) с выводом результатов, и, наконец, отключение от сервера (unbind). Все эти операции реализованы в php функциями с «говорящими» названиями: ldap_connect() , ldap_bind() , ldap_search() и ldap_unbind() . Эти и другие функции работы с LDAP в php описаны в соответствующей странице документации по php. Описаны, кстати, довольно неплохо, с хорошими примерами.

Поскольку при выполнении основной и факультативной задач осуществляются абсолютно одинаковые операции соединения, подключения и отключения от сервера, я решил вынести их в основную часть программы, а различающиеся операции поиска и отображения полученных в результате поиска данных — в отдельные функции. В первой функции get_main() производится поиск сведений о группах в ветке ou=Groups,dc=mycompany,dc=ru. Найденные группы, а также члены каждой из групп сортируются по алфавиту и выводится html-страница с древовидной структурой. Чтобы не изобретать велосипедов с отображением древовидной структуры, я воспользовался готовым модулем dhtmlxTree библиотеки компонентов dhtmlx. Вызов второй функции get_userinfo() выполняется при обращении к программе из ajax-запроса, генерируемого при нажатии на пользователя — члена группы в выведенной в браузер html-странице. В этой функции выполняется поиск в ветке ou=Users,dc=myconpany,dc=ru на совпадение имени пользователя с содержимым атрибута uid. Выбранные в результате поиска атрибуты записи пользователя оформляются в виде таблицы и загружаются в соответствующее информационное поле на html-странице.

‘; // Вывод таблицы с запрашиваемыми данными echo ‘

Выглядит это так:

Код программы с библиотеками dhtmlx и набором иконок можно скачать одним архивом здесь (

Чтение данных. Часть 1. Подключение к AD, запрос и обработка данных

Серия контента:

Этот контент является частью # из серии # статей: Работаем с AD на PHP

Этот контент является частью серии: Работаем с AD на PHP

Следите за выходом новых статей этой серии.

Для выполнения основных операций по работе с AD, таких как добавление или удаление пользователя, изменение данных или членства в группах, и в особенности для массовых операций (например, сформировать список всех пользователей по отделам) вовсе не обязательно изучать Visual Basic или PowerShell — для этого достаточно знания PHP (а также наличия пользователя с необходимыми правами).

Часто используемые сокращения:

  • AD — Active Directory (служба каталогов);
  • LDAP — облегченный протокол доступа к каталогу (lightweight directory access protocol);
  • DN — отличительное имя (distinguished name).

В первых частях цикла, опубликованных в июне месяце ([1], [2], [3]) рассказывалось о том, как прочитать данные сервера AD, обращаясь к нему как к обычному LDAP-серверу с помощью стандартной программы ldapsearch и скрипта, написанного на языке Bourne Shell. Надо сказать, Bourne Shell не слишком приспособлен для такой работы: даже для достаточно простой операции формирования текстового файла из двух колонок приходится идти на весьма нетривиальные ходы. Поэтому совершенно естественно попробовать переписать его на языке высокого уровня, например, на PHP.

Конфигурационный файл

Для работы скрипта используется практически тот же самый конфигурационный файл. Его содержание приведено в Листинге 1.

Листинг 1. Конфигурационный файл скрипта phpldapread.php

Зависимости, вспомогательные функции

Для работы скрипта потребуются дополнительные компоненты pear-Config и pear-Console_Getopt, а также расширение языка php-ldap. Pear-Config потребуется для чтения конфигурационного файла, pear-Console_Getopt — для разбора параметров командной строки. Надо сказать, рассматривается не весь скрипт: такие вопросы, как чтение конфигурационного файла, отображение справки или разбор командной строки являются вопросами уже достаточно хорошо описанными, поэтому соответствующие функции будут опущены, полную версию скрипта можно скачать с [4]. Рассмотрено будет только то, что непосредственно относится к чтению данных из AD, как сервера LDAP, и некоторые нестандартные вспомогательные функции.

Читать еще:  Цели защиты конфиденциальной информации

Функция обратного преобразования пароля приведена в Листинге 2. Вся роль так называемой «защиты» — предотвратить случайную утечку (ту, что называется eyedropper) и не более того.

Листинг 2. Функция обратного преобразования пароля.

Ничего особо интересного, конечно же, здесь нет: как уже было сказано в предыдущих частях, в конфигурационном файле хранится пароль, преобразованный в base64, заполнители отброшены и заменены числом. Эта функция выполняет обратное преобразование.

Функция перекодировки из UTF-8 в KOI8-R приведена в Листинге 3. Необходимость в этой функции возникает вследствие того, что консоль во FreeBSD не использует UTF-8.

Листинг 3. Функция перекодировки строки из UTF-8 в KOI8-R

Кроме того, используется совершенно неинтересная функция safe_logger, в задачу которой входит вывод сообщений в лог или на консоль с завершением или без завершения работы скрипта. Все эти функции сохранены в файле utils.php.

Подключение к AD

Для подключения к AD используется функция ldap_server_connect, приведенная в Листинге 4. Функция выполняет все операции по подключению и возвращает идентификатор соединения для работы с сервером. Функция сохранена в отдельный файл ldapquery.php

Листинг 4. Функция подключения к серверу AD

На что хотелось бы обратить внимание здесь.

Во-первых, опции LDAP_OPT_PROTOCOL_VERSION («версия протокола») и LDAP_OPT_REFERRALS («отключить реферальные ссылки») должны быть обязательно установлены соответственно в 3 и 0 — без них можно увидеть странное: авторизация на сервере пройдет, но любой поиск будет возвращать ровно нуль записей.

Во-вторых, Bind DN должен быть задан в точности как в конфигурационном файле и никаким другим образом. Неверным будет в том числе и указание полного DN.

Запрос данных из AD

Для запроса данных из AD разработана отдельная функция ldap_data_query. Сделано это в основном потому, что данные, содержащие не-ASCII символы (а таких в нормальном AD большинство), хранятся в кодировке UTF-8. Поскольку консоль FreeBSD ограниченно поддерживает UTF-8, пришлось пойти на некоторые преобразования.

Отбор данных из AD проводится функцией ldap_search, которая принимает в числе других параметров одномерный массив с атрибутами, которые необходимо получить. Но для того, чтобы указать, следует ли перекодировать значение этого атрибута, функция получает двумерный массив, в котором каждый элемент сам есть массив, состоящий из элементов с индексами name и recode.

Вид массива атрибутов, который получает на входе функция, показан в Листинге 5 (частично).

Листинг 5. Массив параметров, передаваемый функции запроса данных.

Собственно функция запроса данных приведена в Листинге 6.

Листинг 6. Функция запроса данных из AD.

Из двумерного массива параметров формируется одномерный для функции ldap_search потом запрашиваются данные. Данные возвращаются в виде массива, каждый элемент которого имеет вид, приведенный в Листинге 7.

Листинг 7. Один элемент массива данных, возвращаемого функцией ldap_get_entries.

Как видно, это даже не двумерный, а трехмерный массив. На первом уровне — запрошенные данные, на втором — атрибуты одного объекта, на третьем — строки многострочного атрибута, которым на всякий случай считаются все строковые атрибуты. Также в каждом элементе первого уровня присутствует элемент второго уровня dn, который содержит полный DN данного объекта — это нам очень пригодится в дальнейшем. Выходной же массив куда проще, вид одного элемента приведен на Листинге 8. Здесь нарочно использован объект с не-ASCII данными, чтобы показать тот факт, что данные были перекодированы.

Листинг 8. Элемент выходного массива.

Для чего так подробно рассматриваются входные и выходные данные этой функции? Потому что фактически вся работа основного скрипта (который будет рассмотрен в следующей части статьи) будет сведена к подготовке ее вызова и последующей обработке сформированного ею массива.


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

php LDAP bind на защищенном удаленном сервере Windows сбой

Я пытаюсь запросить удаленный сервер LDAP в безопасном соединении в локальной тестовой среде Windows php. Я думаю, что я должен правильно предоставить доступ, потому что я могу использовать приложение для браузера LDAP и прекрасно подключаюсь к удаленному серверу. Кроме того, если я делаю «telnet remoteserverurl.com 636», тогда в командной строке появляется пустой экран, поэтому я, по крайней мере, подключаюсь. Но в моем следующем.php-коде я получаю сообщение об ошибке: «PHP Warning: ldap_bind(): Не удается привязываться к серверу: не удается связаться с сервером LDAP в строке. «

Тот же код работает на сервере Linux. Я думаю, что есть какие-то недостающие библиотеки LDAP в моей локальной среде php для безопасного соединения LDAP? Во всяком случае, вот код:

Есть идеи? Благодарю!

security windows php bind

3 ответа

5 Justin C [2014-11-12 06:39:00]

Знайте, что это старше, но я недавно столкнулся с подобной проблемой при использовании wordpress 3.x и 4.x в Windows 2008 и 2012 (IIS 7.x и 8.x, PHP 5.6).

Я написал плагин для аутентификации ldap для wordpress — как пытался получить LDAPS (ldap secure over port 636 работает).

  1. При использовании PHP LDAPS в документации указано, что вы просто префикс LDAP-сервера с помощью ldaps:// . Поэтому server1.domain.com для LDAPS должен быть ldaps://server1.domain.com/ . обратите внимание, что вам не нужно передавать порт вообще для метода подключения (на http://php.net/manual/en/function.ldap-connect.php). Это очень похоже на то, что исходный вопрос имеет в его представлении.
  2. Библиотеки Windows PHP жестко закодированы для поиска открытого файла конфигурации ldap ( ldap.conf ) в C:openldapsysconfldap.conf .
  3. Создайте текстовый файл, упомянутый в № 2 выше — здесь вы указываете на хранилище сертификатов. Как только вы создадите этот файл, вы можете поместить его в TLS_REQCERT never . но это означает, что никакие сертификаты не проверяются, и все доверяют автоматически (по существу) — должны быть только для тестирования. никогда не для производства, поскольку вы побеждаете часть безопасности TLS/SSL (то есть, удостоверяя, что вы действительно разговариваете с хостом, с которым, как вы считаете, вы подключены).
  4. Вместо небезопасного TLS_REQCERT never вариант, который, кажется, является популярным (и, возможно, ошибочным) предложением на межсетевых экранах. захватывает общий список государственных сертификатов, используемый завитой и аналогичной — http://curl.haxx.se/ca/cacert.pem. Это, по сути, то, что firefox поставляется для общедоступных доверенных сертификатов (то есть, почему вы можете установить firefox и перейти на https://amazon.com без предупреждения о сертификате и т.д.).
  5. Выгрузите файл cacert.pem, который вы загрузили (это просто текстовый файл с кучей хэшей и описаний сертификатов) с вашей установкой PHP. Например, скажем, я сбросил его с моей установкой php в c:php5cacert.pem . Ваше местоположение может отличаться, но помещайте его куда-то, к чему его можно получить, и он будет сгруппирован с материалом php, поскольку он связан. Здесь пара снимков содержимого файла cacert.pem чтобы дать вам представление о том, что внутри.
  6. Отредактируйте C:openldapsysconfldap.conf и добавьте строку для команды TLS_CACERT как показано на рисунке.
  7. Это должно позволить вам теперь доверять общедоступным действительным сертификатам, как это делают современные веб-браузеры, и т.д. Обратите внимание, что он не будет исправлять проблемы с внутренним выпуском или самозаверяющим сертификатом сертификатов. Но вы также можете легко это сделать, добавив свои собственные хеши сертификатов в файл cacert.pem.
  8. Чтобы добавить другой сертификат в качестве надежного в файл cacert.pem, просто получите копию соответствующего сертификата (вам просто нужно экспортировать его в .cer в формате base64 — не нужен личный ключ, а расширение действительно не работает) не имеет значения — просто должен быть хэш-выход). Если вы экспортировали его в нужном формате, вы можете открыть файл сертификата и увидеть хэш — он будет похож (но не идентичен) на скриншот здесь примера CA сервера Thawte. Просто добавьте хэш, который вы экспортировали в файл cacert.pem, и ему будет доверено. Если вы хотите быть умным, вы можете вместо этого импортировать сертификат выдачи для своего частного сертификата — это будет доверять любому сертификату, подписанному импортированным сертификатом. Если вы сомневаетесь, вы всегда можете просто импортировать представленный сертификат.
  9. После внесения таких изменений я решил, что лучше перезапустить веб-сервер (диспетчер iis → узел веб-сервера → параметр перезагрузки), поэтому все с использованием php было сброшено.
  10. Для дополнительного кредита вы можете использовать один и тот же файл cacert.pem для реализации curl, отредактировав файл php.ini и поместив полный путь в файл cacert.pem в строке curl.cainfo = .
  11. Опять же, я знаю, что это более старая должность, но я хотел поделиться тем, что узнал, подключая WordPress к eDirectory через LDAPS.
Читать еще:  Как пользоваться matlab

Проверьте свои библиотеки PHP

Поскольку вы можете подключиться с помощью LDAP-клиента, я ожидаю, что ваш LDAP запускает SSL

Вы скопировали свой сертификат SSL?

Скопируйте сертификаты сервера в каталог sys: /php5/cert. Это местоположение настраивается в файле php.ini.

Используйте префикс «ldaps://» для аргумента имени узла или значение 636 для аргумента номера порта в вызове ldap_connect.

Я получил эту работу! @s.lenders «ответ» (спасибо за это) указал на некоторые проблемы с сертификатом, и действительно, это была проблема с сертификатом. У удаления LDAP Server был свой сертификат в состоянии с истекшим сроком действия — я получил предупреждение об этом, даже когда я подключился с помощью настольного приложения (SoftTerra LDAP Browser). Поэтому импортированный сертификат в мои сертификаты Windows — приложение SoftTerra LDAP Browser разрешило мне эту опцию. И, вуаля !. Вызовы SSL LDAP работают.

** Обновление: не уверен, помог ли этот вышеприведенный сертификат или нет, но вот что-то более конкретное, которое помогло мне: похоже, что библиотеки php LDAP ищут определенные файлы conf; с жестким кодом: COpenLDAPsysconfldap.conf?! Поэтому я в основном создавал новые папки для этой информации и помещал файл ldap.conf только с «TLS_REQCERT never», и это помогает! Я протестировал его. Если я должен удалить этот файл, тогда мои защищенные запросы LDAP не работают и не выполняются на этапе «привязки». Заметьте, мне нравится «никогда» в моем conf, потому что это будет только на моей собственной рабочей станции.

Также обратите внимание, что я нахожусь на Windows 7 с IIS 7+ **

PHP-ldap_bind возвращает недопустимые учетные данные

Я пытаюсь сделать страницу входа, которая аутентифицируется с помощью сервера LDAP. Я использую следующую информацию, и она работает с клиентом LDAP.

и тогда у меня есть следующий код:

Теперь этот код PHP возвращает » Failed to bind. Invalid Credenitials»

Есть идеи, что я делаю неправильно здесь?

2 Ответа

Я думаю, что вы должны использовать либо sAMAccountName=$uname,ou=som,dc=med,dc=xxx,dc=edu , либо просто MED\$uname для привязки.

Последний-это специальная функция ActiveDirectory. Первый учитывает, что уникальный идентификатор на AD называется sAMAccountName , а не uid

У меня была аналогичная проблема с получением «invalid credentials» при попытке войти в Active Directory через LDAP, но только для определенных пользователей. Я попытался использовать / удалить domain_prefix , как с одной, так и с двойной обратной косой чертой, но безрезультатно. Учетные данные для входа были проверены для каждой учетной записи, которую я пробовал, но только один (мой, как ни странно) работал, в то время как другие с более или менее разрешениями, разными или идентичными группами, все потерпели неудачу. То, что я нашел, было решением проблемы: переменная $ldaprdn,, которая хранила RDN, была в этом формате:

По какой-то причине это не удалось для всех учетных записей, кроме моей (веб-сервер, на котором работает сайт интрасети, на котором я работаю, находится на моей рабочей станции, что может быть или не быть актуальным), но не удалось для каждого другого пользователя. Путем изменения RDN строку на эту:

теперь он отлично работает для всех действительных учетных записей. Я понятия не имею, почему это происходит, либо для того, почему все учетные данные для входа, кроме моих, не удалось, или почему удаление фигурных скобок «fixed» проблема. Если у кого-то есть идеи о том, почему это, казалось бы, незначительное изменение имело такой странный эффект, я все уши.

Похожие вопросы:

Я пытаюсь сделать простой список (в php) всех файлов, которые пользователь имеет на своем диске. Я хочу сохранить маркер доступа, идентификатор пользователя и email в bd и получить идентификатор.

В первую очередь включается LDAP_bind anonymous. Проблема, с которой я сталкиваюсь, заключается в следующем: Этот код прекрасно работает без проблем: username . @ . $servidor_dominio, $this->password); Описание этой функции указывает, что она возвращает bool.

У меня есть этот код PHP: $ldap = ldap_connect(aaa.bbbbb.cc) or die(Could not connect to LDAP server.); ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap.

Я пытаюсь аутентифицировать пользователя с помощью LDAP, используя PHP. У меня есть DN для пользователя, который я проверил, чтобы быть правильным. У меня тоже есть пароль. Это правильный пароль для.

Возможно ли вообще избежать предупреждения php на экране, когда недопустимые учетные данные на ldap_bind, но без использования @ldap_bind или error_reporting, установленного в 0? Я пытался с.

Добрый день! Откуда мы знаем, что сервер LDAP допускает анонимные соединения? Когда я запускаю свою программу php: я получаю эту ошибку: Предупреждение: ldap_bind() [function.ldap-bind]: не удается.

Я пытаюсь реализовать аутентификацию пользователя LDAP, однако по какой-то причине независимо от того, что такое вход, ldap_bind всегда возвращает true. Является ли ввод тарабарщиной, пустым или.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт