Я ищу способ аутентификации пользователей через LDAP с PHP (с Active Directory в качестве провайдера). В идеале он должен работать на IIS 7 ( adLDAP делает это на Apache). Кто-нибудь делал что-то подобное, но успешно?
- Изменить: я бы предпочел библиотеку / класс с кодом, готовым к работе ... Было бы глупо изобретать колесо, когда кто-то уже это сделал.
Ответы:
Импорт всей библиотеки кажется неэффективным, когда все, что вам нужно, это две строчки кода ...
источник
ldap_set_option
чтобы заставить его вести себя по-другому. Возможно установка версии протокола? Придется поэкспериментировать. Я бы лично посоветовал вам все равно проверить пустой пароль на всякий случай.ldap_bind
она обрабатывается, и специальные символы не являются проблемой.Вы можете подумать, что простая аутентификация пользователя в Active Directory будет довольно простым процессом с использованием LDAP в PHP без необходимости в библиотеке. Но есть много вещей, которые могут очень быстро усложнить задачу:
На самом деле в большинстве случаев проще использовать библиотеку LDAP, поддерживающую вышеуказанное. В конечном итоге я создал свою собственную библиотеку, которая обрабатывает все вышеперечисленные пункты: LdapTools (ну, не только для аутентификации, он может гораздо больше). Его можно использовать следующим образом:
Вызов аутентификации выше будет:
Для этого существуют и другие библиотеки (например, Adldap2). Тем не менее, я чувствовал себя достаточно вынужденным предоставить некоторую дополнительную информацию, поскольку ответ, получивший наибольшее количество голосов, на самом деле представляет собой угрозу безопасности, на которую можно полагаться, без проверки ввода и без использования TLS.
источник
ldaps://
формата для подключения устарело. В моем примере, когда вы указываете,setUseTls(true)
он используетldap://
формат, а затем выдает StartTLS с использованиемldap_start_tls($connection)
. Таким образом, сам TLS не устарел, просто используется подключениеldaps://
(которое фактически подключается к LDAP через совершенно другой порт).Я делаю это, просто передавая учетные данные пользователя ldap_bind ().
http://php.net/manual/en/function.ldap-bind.php
Если учетная запись может быть привязана к LDAP, это действительно так; если не может, то нет. Если все, что вы делаете, это проверка подлинности (а не управление учетной записью), я не вижу необходимости в библиотеке.
источник
Мне нравится класс Zend_Ldap , вы можете использовать только этот класс в своем проекте без Zend Framework.
источник
У PHP есть библиотеки: http://ca.php.net/ldap
PEAR также имеет ряд пакетов: http://pear.php.net/search.php?q=ldap&in=packages&x=0&y=0
Я ни то, ни другое не использовал, но в какой-то момент собирался, и мне показалось, что они должны работать.
источник
Для тех, кто ищет полный пример, посетите http://www.exchangecore.com/blog/how-use-ldap-active-directory-authentication-php/ .
Я протестировал это подключение к контроллерам домена Windows Server 2003 и Windows Server 2008 R2 с веб-сервера Windows Server 2003 (IIS6) и с предприятия Windows Server 2012 под управлением IIS 8.
источник