Невозможно использовать аутентификацию на сервере ldap модуль ldap языка php не установлен
Аутентификация LDAP не работает для страницы входа
Я пытаюсь создать простую страницу входа для пользователей интрасети, чтобы войти и получить веб-страницу полезных ссылок. При входе в систему используется аутентификация PHP и LDAP, однако это не удается.
Файл authenticate.php проверяет их логин и подтверждает, что они являются членами группы безопасности в AD для получения доступа. Ниже приведен мой файл index.php, который запрашивает у пользователей имя домена и пароль:
index.php
А вот мой файл authenticate.php, который аутентифицирует логин пользователя:
authenticate.php (переменные удалены в целях безопасности.)
Когда я пытаюсь войти, я всегда получаю эту ошибку:
1Loginfailed: неверное имя пользователя, пароль или права
Я попытался повторить результаты функции ldap_get_entries (), и она возвращает следующее:
Есть идеи, где я иду не так? Любая помощь высоко ценится и заранее спасибо!
Решение
если это ваш настоящий файл, проблема заключается в следующем:
Вы должны назначить правильные значения для этих переменных.
Другие решения
Вот простое подключение php ldap действующего пользователя к активной директории.
ТРЕБУЕТСЯ ПЕРЕД СВЯЗЬЮ :
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); версия 3 для общения с активным каталогом,
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0) ; отключить обработку рефералов.
Аутентификация клиентов при помощи LDAP на сервере Ubuntu 12.04
LDAP (или Lightweight Directory Access Protocol) – это протокол, позволяющий хранить данные аутентификации в одном централизованном месте. В предыдущей статье было показано, как настроить сервер LDAP на Ubuntu 12.04.
Данная статья поможет настроить удалённую аутентификацию клиентских машин.
Примечание: Для выполнения руководства нужны предварительно настроенный сервер Ubuntu 12.04 и установленный сервер LDAP. Также понадобится ещё один сервер Ubuntu 12.04, который будет использован в качестве клиента.
Установка пакетов клиента
На клиентскую машину нужно установить несколько пакетов для корректной поддержки аутентификации LDAP.
Чтобы загрузить эти пакеты из стандартного репозитория Ubuntu, используйте следующие команды:
sudo apt-get update
sudo apt-get install libpam-ldap nscd
Система задаст несколько стандартных вопросов и запросит некоторые данные, а именно:
Если вы допустили ошибку и хотите её исправить, можете вернуться в это меню при помощи команды:
sudo dpkg-reconfigure ldap-auth-config
Настройка клиента
Теперь нужно отредактировать некоторые настройки, чтобы файлы аутентификации могли обращаться к серверу LDAP за информацией.
Для начала отредактируйте файл /etc/nsswitch.conf. Он позволяет настроить изменение учетных данных LDAP при запуске пользователями определённых команд аутентификации.
sudo nano /etc/nsswitch.conf
Найдите в файле строки passwd, group и shadow и отредактируйте их следующим образом:
passwd: ldap compat
group: ldap compat
shadow: ldap compat
Затем нужно добавить некоторые значения в настройки PAM.
PAM (или Pluggable Authentication Modules) – это система, которая соединяет приложения, обеспечивающие аутентификацию в тех приложениях, которые требуют проверки подлинности.
Система PAM внедрена по умолчанию на большинстве компьютеров, работает в фоновом режиме и не требует вмешательства пользователя. После установки модуля PAM для LDAP большая часть необходимой информации была добавлена в конфигурационные файлы.
Отредактируйте файл /etc/pam.d/common-session:
sudo nano /etc/pam.d/common-session
В конец файла добавьте строку:
session required pam_mkhomedir.so skel=/etc/skel umask=0022
Это создаст на клиентской машине домашний каталог при подключении пользователя LDAP, у которого нет такого каталога.
Чтобы обновить настройки, перезапустите сервис:
sudo /etc/init.d/nscd restart
Права доступа
Как помните, во время настройки сервера LDAP была создана группа admin. Это название выбрано не случайно. Оно совпадает с названием группы, созданной на машине Ubuntu по умолчанию.
Пользователи LDAP, добавленные в группу admin, получают доступ к команде sudo согласно настройкам файла /etc/sudoers.
Отредактируйте этот файл:
Все записи, начинающиеся с символа %, обозначают группу, а не пользователя. Чтобы отключить доступ пользователей к команде sudo или передать права доступа только определённым пользователям, закомментируйте эту строку:
Вход пользователя LDAP
Теперь клиентская машина настроена и может подключиться в качестве пользователя LDAP. Этот пользователь не должен существовать на клиентском компьютере.
В новом окне терминала создайте SSH-подключение к клиентскому компьютеру, используя учетные данные пользователя LDAP.
Примечание: Рекомендуется оставить исходное окно терминала на случай ошибок в конфигурации.
Пользователь должен подключиться так, будто он был создан локально. Запросите рабочий каталог:
Команда вернёт домашний каталог, созданный при входе этого пользователя.
Попробуйте выйти и войти снова как другой пользователь LDAP. На сервере появится ещё один домашний каталог пользователя:
ls /home
user1 user2
Если пользователь входит в группу admin, и вы не отключили доступ к sudo в предыдущем разделе, то тот пользователь сможет запускать команды с sudo.
Запустите команду passwd, чтобы изменить пароль. Как видите, сервер LDAP позволяет изменить учётные данные:
passwd
Enter login(LDAP) password:
Ограничение доступа по группам
Чтобы возможность войти на данный компьютер была только у членов определенных групп, можно отредактировать файлы PAM.
Откройте для редактирования с правами root:
sudo nano /etc/pam.d/common-auth
В конце файла нужно указать, что система PAM должна проверять файлы доступа, прежде чем пропустить пользователя.
auth required pam_access.so
Сохраните и закройте файл.
Файл, к которому обращается PAM за информацией о доступе – /etc/security/access.conf. Откройте его:
sudo nano /etc/security/access.conf
В конец этого файла нужно добавить правило.
Символ тире в начале строки значит, что это ограничение. Между символами двоеточия указывается само правило.
В данном случае правило касается всех пользователей, кроме root и членов группы admin. Группы указываются в скобках.
После второго символа двоеточия уточняется, при каких обстоятельствах правило должно применяться. В данном примере ограничение будет применяться во всех случаях, кроме локальных подключений.
-:ALL EXCEPT root (admin):ALL EXCEPT LOCAL
Внимание: Это правило применяется ко всем пользователям, а не только к пользователям LDAP. Потому любой пользователь, созданный на клиентской машине, должны входить в одну из указанных в правиле групп, чтобы получить доступ.
Заключение
Теперь сервер LDAP позволяет аутентифицировать клиентов. Пользователи LDAP с валидными учётными данными смогут пользоваться всеми машинами, доступ к которым не заблокирован.
Такой подход позволяет предотвратить рассредоточение, дублирование и потерю контроля над данными. Аутентификация LDAP особенно важна в случаях, когда количество пользователей, имеющих доступ к серверам и проектам, постоянно растет.
Настройка интеграции Nextcloud с LDAP
Для хранения пользователей Nextcloud можно использовать как внутреннюю базу, так и внешнюю, например, сервер каталогов (LDAP). Так как реализации последнего могут быть разные, мы рассмотрим настройку для Active Directory и FreeIPA. Также мы выполним конфигурирование как в веб-интерфейсе, так и из командной строки.
Подготовка системы
1. Предполагается, что у нас уже есть настроенный сервер Nextcloud, например, по одной из инструкций:
2. Также необходимо убедиться в наличие модуля php-ldap. В противном случае в процессе настройки мы можем получить ошибку the library ldap is not available.
Чтобы посмотреть наличие модуля можно выполнить команду на сервере:
Если мы получим в ответ пустую строку, то необходимо установить пакет php-ldap и перезапустить службу, обрабатывающую скрипты php.
yum install php-ldap
systemctl restart php-fpm
systemctl restart httpd
* в данном примере мы перезапускаем и php-fpm, и httpd. В вашей системе может использоваться только один сервис.
apt-get install php-ldap
systemctl restart php7.4-fpm
systemctl restart apache2
* в данном примере мы перезапускаем и php7.4-fpm, и apache2. В вашей системе может использоваться только один сервис. Имя для сервиса php7.4-fpm может быть другим — это зависит от версии PHP.
3. У нас должна быть учетная запись на сервере LDAP с правами чтения (DN user). От данной учетной записи будет выполняться подключение к серверу каталогов.
В моем примере будет создана запись bind.
Включение модуля (приложения) интеграции с LDAP
По умолчанию, после установки Nextcloud приложение для интеграции с LDAP установлено, но не активировано. Рассмотрим 2 способа его включения.
Графический интерфейс
Переходим к списку приложений:
Находим LDAP user and group backend:
Справа от приложения кликаем по Включить:
Командная строка
Из командной строки мы можем управлять Nextcloud с помощью утилиты occ, которая находится в каталоге самого портала.
Для включения приложения интеграции LDAP вводим команду.
а) на CentOS / Red Hat / Fedora:
б) на Ubuntu / Debian:
* где в приведенных 2-х командах /var/www/nextcloud — путь, в котором установлен nextcloud.
* обе команды аналогичны, за исключением пользователя, от которого они запускаются. В CentOS apache, а в Ubuntu www-data.
Настройка интеграции
Рассмотрим также 2 способа — с помощью веб-интерфейса и командной строки.
Графический интерфейс
Переходим к настройкам, кликнув по значку пользователя и выбрав Настройки:
Выбираем подраздел Интеграция LDAP / AD:
В открывшемся окне, на вкладке Сервер добавляем имя сервера (можно задать просто имя домена). После нажимаем кнопку Определить порт — мы должны увидеть порт для подключения к каталогу (как правило, 389 или 636):
* в данном примере мы задали имя сервера (домена) dmosk.local. Обратите внимание, что не все реализации LDAP позволяют системе определить порт — в таком случае, просто пропишем его вручную.
* как говорилось выше, для связки с ldap была создана запись bind. В разных реализациях LDAP могут быть разные требования для указания учетной записи. Например, во FreeIPA необходимо указать uid=bind,cn=users,cn=accounts,dc=dmosk,dc=local.
Для базы поиска пользователей и групп можно просто кликнуть по Определить базу поиска DN — тогда будет определен корень домена. Или можно ввести самому конкретное подразделение:
* в моем примере данные из AD будут искаться в организационном юните Пользователи, который находится в корне домена dmosk.local. Для других реализаций ldap определение может не работать — вводим вручную. Также, база должна быть соответствующей, например, для FreeIPA это cn=users,cn=accounts,dc=dmosk,dc=local.
Нажимаем Проверить базу поиска DN:
Если наши настройки верны, мы должны увидеть фразу «Конфигурация в порядке»:
Нажимаем Продолжить — мы должны перейти на вкладку Пользователи:
На данной вкладке можно ничего не трогать, или настроить дополнительные фильтры. После кликаем по кнопке Проверить настройки и пересчитать пользователей:
* в моем примере было найдено 388 пользователей.
В нижней части мы должны увидеть Конфигурация в порядке. Кликаем по Продолжить:
Мы окажемся на странице Учетные данные:
Мы можем задать поле, которое будем использовать в качестве логина:
* в данном примере мы оставляем значение по умолчанию — имена пользователя ldap.
Ниже мы можем проверить учетную запись, введя ее в специальное поле и нажав Проверить настройки:
. если учетная запись найдена, мы увидим сообщение Пользователь найден и настройки проверены:
Внизу проверим, чтобы конфигурация была в порядке и нажимаем Продолжить:
На последней вкладке можно задать фильтры для групп или оставить по умолчанию.
Интеграция настроена. Пользователи будут загружаться из каталога ldap, но их идентификаторы будут отображаться в виде UID — это произвольные набор цифр и букв и его использовать не удобно. Чтобы изменить атрибут для имени nextcloud, кликаем по ссылке Эксперт:
Задаем атрибут из ldap, который мы будем использовать для внутреннего имени системы:
* в данном примере мы задали атрибут, характерный для логина Active Directory. Для FreeIPA указываем uid.
Командная строка
Для дальнейшего удобства, определим переменную с пользователем, от которого работает веб-сервер.
а) для CentOS / Red Hat:
б) для Ubuntu / Debian:
Теперь создаем конфигурацию:
Мы должны увидеть в ответ что-то на подобие:
Created new configuration with configID s01
* в данном примере создана конфигурация с идентификатором s01 — последующие команды будут вводиться с данным ID.
Посмотреть информацию о созданной конфигурации можно командой:
Теперь задаем настройки.
Указываем ldap-сервер для подключения и порт:
* в данном примере мы сервер dmosk.local и порт 389 (не зашифрованные запросы к ldap).
Задаем пользователя, от которого будем выполнять подключения к каталогу:
Задаем область поиска учетных записей:
Задаем фильтры пользователя, поля для логина и класса объекта:
Указываем поле для атрибута электронной почты:
The configuration is valid and the connection could be established!
Если же мы увидим ошибку, смотрим лог и устраняем проблемы:
Пользователи будут загружаться из каталога ldap, но их идентификаторы будут отображаться в виде UID — это произвольные набор цифр и букв и его использовать не удобно. Чтобы изменить атрибут для имени nextcloud, вводим:
Список пользователей
Чтобы посмотреть список пользователей, кликаем по изображению аккаунта и выбираем Пользователи:
Система должна подгрузить пользователей из ldap.
LDAP аутентификация
Укажите этот метод аутентификации при использовании сервера LDAP для аутентификации пользователей, которые имеют свои учетные записи на сервере LDAP. Аутентификация пользователей, не имеющих учетных записей на сервере LDAP, невозможна. Адресная книга, сохраненная на сервере LDAP, может быть зарегистрирована на аппарате, что позволяет выполнять аутентификацию пользователей без предварительной регистрации индивидуальных настроек в адресной книге. Для предотвращения незашифрованной отправки данных пароля по сети при использовании аутентификации LDAP рекомендуется зашифровать соединение между аппаратом и сервером LDAP с помощью SSL. На сервере LDAP можно указать необходимость активации шифрования SSL. Для этого необходимо создать сертификат сервера для сервера LDAP. Для получения подробных сведений о создании сертификата сервера см. Создание сертификата серверов. Параметры SSL можно указать в настройке сервера LDAP.
С помощью Web Image Monitor можно включить функцию проверки надежности сервера SSL. Для получения подробных сведений о настройке аутентификации LDAP с помощью Web Image Monitor см. справку по Web Image Monitor.
Если выбрана аутентификация Cleartext, то включается упрощенная аутентификация LDAP. Упрощенная аутентификация может быть выполнена с использованием атрибута пользователя (такого как «cn» или «uid») вместо DN.
Чтобы включить аутентификацию Kerberos для LDAP, нужно заранее зарегистрировать область. Область должна быть настроена с использованием заглавных букв. Для получения подробных сведений о регистрации области действия см. руководство «Подсоединение аппарата/Настройки системы».
Во время аутентификации LDAP регистрируемые на сервере LDAP данные, такие как адрес электронной почты пользователя, автоматически регистрируются в аппарате. Если данные пользователя на сервере изменяются, то при выполнении аутентификации данные, зарегистрированные в аппарате, могут быть стерты.
При аутентификации LDAP нельзя указать границы доступа для групп, зарегистрированных на сервере каталогов.
Нельзя использовать двухбайтовые символы японского, традиционного и упрощенного китайского или корейского языка хангул при вводе имени регистрации пользователя или пароля. При использовании двухбайтовых символов нельзя выполнить аутентификацию с помощью Web Image Monitor.
Если при аутентификации LDAP используется Active Directory с одновременной установкой аутентификации Kerberos и SSL, получение адресов электронной почты невозможно.
При аутентификации LDAP, если установка «Анонимная аутентификация» на сервере LDAP не установлена на запрет, пользователи, не имеющие учетной записи на сервере LDAP, могут получить доступ к серверу.
Если сервер LDAP сконфигурирована с использование активного каталога Windows, то может быть доступна «Анонимная аутентификация». Если доступна аутентификация Windows, то рекомендуется пользоваться ею.
Системные требования для LDAP аутентификации
Для определения аутентификации LDAP должны выполняться следующие требования:
Настройка сети для возможности обнаружения сервера LDAP аппаратом.
Если используется SSL, на сервере LDAP может работать TLSv1 или SSLv3.
Регистрация сервера LDAP для аппарата.
Для регистрации сервера LDAP укажите следующие параметры:
Выберите аутентификацию Kerberos, DIGEST или Cleartext (незашифрованный текст).
Если сервер LDAP поддерживает функцию «Анонимная аутентификация», то ввод имени пользователя не требуется.
Если сервер LDAP поддерживает функцию «Анонимная аутентификация», то ввод пароля не требуется.
Для получения подробных сведений о регистрации сервера LADP см. руководство «Подсоединение аппарата/Настройки системы».
Для получения сведений о символах, которые можно использовать при указании имени пользователя и пароля, см. Символы, которые можно использовать при вводе имени пользователя и пароля.
В режиме упрощенной аутентификации LDAP проверка подлинности завершится ошибкой, если оставить поле пароля пустым. Для использования пустого поля пароля обратитесь к представителю сервисной службы.
При первом доступе незарегистрированного пользователя к устройству после установки аутентификации LDAP пользователь регистрируется на устройстве и может использовать функции, доступные в блоке «Доступные функции» во время аутентификации LDAP. Для ограничения функций, доступных для каждого пользователя, зарегистрируйте в адресной книге каждого пользователя и соответствующую настройку «Доступные функции» или укажите «Доступные функции» для каждого зарегистрированного пользователя. Установка «Доступные функции» вступает в силу при последующем доступе пользователя к устройству.
Если включена аутентификация Kerberos, данные, передаваемые между аппаратом и сервером KDC, шифруются. Для получения сведений об установке шифрования передаваемых данных см. Настройка шифрования для аутентификации Kerberos.
Перед началом настройки аппарата убедитесь в том, что аутентификация администратора правильно настроена в блоке «Управление аутентификацией администратора».
Войдите в систему с панели управления в качестве администратора аппарата.
Выберите сервер LDAP, который будет использоваться для аутентификации LDAP.
Выберите уровень «Аутент.здн.на печ.».
Для изучения уровней аутентификации заданий принтера см. Аутентификация заданий на печать.
Вы можете указать диапазон адресов IPv4, к которым будет применен данный параметр. Кроме того, можно указать, применять ли параметр к USB-интерфейсу.
В разделе “Доступные функции” выберите функции аппарата, доступ к которым следует разрешить.
К указанным функциям будет применяться аутентификация LDAP.
Пользователи могут использовать только выбранные функции.
Для получения подробных сведений о настройке доступных функций для пользователей или групп см. Ограничение доступных функций.
Нажмите [ След.] для отображения стр.4.
Атрибут имени логина можно использовать в качестве критерия поиска для получения данных об аутентифицированном пользователе. Вы можете создать поисковый фильтр на основе атрибута для имени пользователя, выбрать пользователя, а затем извлечь информацию о пользователе с сервера LDAP, чтобы перенести ее в адресную книгу аппарата.
Для указания нескольких атрибутов логина поставьте запятую (,) между ними. При поиске будут выявлены совпадения внесенного логина со всеми атрибутами.
Также, если вы поставите знак равенства (=) между двумя атрибутами логина (например: cn=abcde, uid=xyz), при поиске будут найдены только совпадения, соответствующие атрибутам. Эта функция поиска может также быть применена при использовании аутентификации Cleartext.
При аутентификации с использованием формата DN нет необходимости в регистрации атрибутов логина.
Метод выбора имени пользователя зависит от среды сервера. Проверьте среду сервера и введите имя пользователя соответственно.
Укажите уникальный атрибут в аппарате, чтобы информация о пользователе на сервере LDAP соответствовала информации в аппарате. Таким образом, если уникальный атрибут пользователя, зарегистрированный на сервере LDAP, соответствует атрибуту пользователя, зарегистрированному в аппарате, оба они считаются относящимися к одному и тому же пользователю.
Вы можете ввести такой атрибут как «serialNumber» или «uid». Кроме того, можно ввести «cn» или «employeeNumber», при условии их уникальности. Если не указать уникальный атрибут, в аппарате будет создана учетная запись с той же информацией о пользователе, но с другим именем пользователя.
Выйдите из системы.
При использовании стандартной панели управления
При использовании Smart Operation Panel