Перейти к основному содержимому

Active Directory

Active Directory (AD) от Microsoft предоставляет разнообразные сетевые службы каталогов, включая функции Lightweight Directory Access Protocol (LDAP). Она включена в Windows 2000 Server и более поздние версии операционной системы. Основное внимание на текущей странице будет уделено аутентификации LDAP.

Устранение неполадок с AD и аутентификацией LDAP

Предупреждение: Похоже, что модуль PHP LDAP отсутствует. Пожалуйста, убедитесь, что он установлен и включён.

Обычно это означает, что основная dll ldap или одна из вспомогательных dll отсутствуют. Начнём с самой основной. Перейдите по адресу http://(moodleserver)/admin/phpinfo.php и изучите поле «Путь к файлу конфигурации (php.ini)», чтобы определить, какой файл php.ini используется, и откройте его в редакторе. Найдите строку 'extension=php_ldap.dll' и уберите точку с запятой, если она там есть. Эта точка с запятой помешает загрузке модуля! Пока файл открыт, найдите 'extension_dir' и обратите внимание, какая папка там указана. Откройте эту папку и убедитесь, что файл php_ldap.dll находится там. Если его нет, поместите его туда. Если это всё ещё не устранило проблему, значит, отсутствует вспомогательная dll, но об этом не сообщается. Чтобы увидеть, какие dll отсутствуют, откройте командную строку и перейдите в каталог php, затем выполните следующую строку: 'php -m'. Теперь вы должны получить сообщения об ошибках. Некрасиво, но, по крайней мере, они предоставляют информацию! Найдите перечисленные dll и скопируйте их в каталог php. Возможно, теперь вам потребуется перезапустить службу apache/httpd. Запустите 'php -m' ещё раз, и теперь вы должны быть свободны от ошибок, а сообщение в Moodle должно исчезнуть.

LDAP-модуль не может подключиться к любым серверам LDAP

LDAP-модуль не может подключиться к любым серверам LDAP:
Сервер: 'ldap://my.ldap.server/'
Соединение: 'Идентификатор ресурса #26' Результат привязки: ''

Получение этого сообщения при попытке входа в систему является результатом неверных данных для пользователя привязки или недостаточных разрешений учётной записи пользователя в Active Directory. Лучший способ проверить и решить эту проблему — использовать ldp.exe для тестирования привязки до тех пор, пока она не будет успешной. Ниже приведены инструкции по установке ldp.exe. Откройте программу и подключитесь к AD, указав имя сервера, затем в меню «Соединение» выберите «Привязать». Введите данные, которые вы считаете правильными, и, вероятно, вы обнаружите, что возвращается ошибка. Попытайтесь настроить привилегии учётной записи или использовать другую учётную запись, пока не получите сообщение «Аутентифицирован как». Как только вы убедитесь, что ваша учётная запись может быть использована для привязки к AD, проверьте, что DN имени этого пользователя указан правильно. Раскройте дерево слева, пока не найдёте пользователя, которого вы использовали для привязки. Щёлкните правой кнопкой мыши на этом элементе и выберите «Копировать DN». Перейдите на страницу аутентификации пользователей в Moodle и вставьте значение в поле ldap_bind_dn. Добавьте пароль, и теперь вы можете быть уверены, что ваш пользователь успешно привязан.

Получение правильных CN для контекстов и создателей

Для тех, кто не знаком с AD, это может быть очень запутанно, и не так просто для некоторых, кто знаком с этим. Опять же, ldp.exe — ваш друг. Ниже приведены инструкции по установке ldp.exe. Откройте его и раскройте дерево слева, пока не найдёте группу или пользователя, которого вы хотите использовать, затем щёлкните правой кнопкой мыши и выберите «Копировать DN». Вернитесь на страницу аутентификации пользователей в Moodle и вставьте это значение в ldap_contexts или ldap_creators.

Получение правильного user_attribute

По умолчанию Moodle использует cn учётной записи (полное имя) для проверки, но большинство сетей не используют полное имя для входа, так как его легко угадать, и у вас может быть два человека с одинаковым именем. Если это относится и к вам, вам нужно сообщить Moodle, чтобы она искала другое поле для идентификатора входа. В ldp.exe перейдите по дереву слева, чтобы найти учётную запись пользователя, желательно свою. Дважды щёлкните элемент в дереве, и полные данные будут загружены на экран справа. Просмотрите данные, пока не найдёте свой идентификатор входа, и обратите внимание на элемент, указанный напротив него. Для меня и многих людей это sAMAccountName. Скопируйте это имя и вставьте его в ldap_user_attribute на странице аутентификации пользователей в Moodle. Ниже приведены инструкции по установке ldp.exe.

Установка серверного инструмента ldp.exe

ldp.exe входит в состав Server Tools в большинстве версий Windows Server. Найдите установочный диск Windows Server и найдите на нём папку с названием Support\Tools. В ней будет файл SupTools.msi, который установит серверные инструменты при запуске. Теперь у вас должна быть папка Program Files с названием Support Tools, в которой будет ldp.exe. ldp.exe также доступен в Windows XP Support Tools, которые можно загрузить с сайта Microsoft здесь. В качестве альтернативы, одиночный файл загрузки ldp.exe доступен здесь.

Пример настройки Active Directory

Ниже приведён пример настройки для Active Directory. Как указано выше, значения могут различаться в зависимости от вашей локальной конфигурации Active Directory, но должны служить хорошей отправной точкой для большинства случаев.

ldap_host_url = ldap://ads.example.com
ldap_version = 3
ldap_preventpassindb = yes
ldap_bind_dn = bind-user@example.com
ldap_bind_pw = bind-password
ldap_user_type = MS ActiveDirectory
ldap_contexts = ou=moodleusers,dc=example,dc=com
ldap_user_attribute = sAMAccountName

Обратите внимание, что значение ldap_bind_dn должно работать либо в формате CN=bin-user,CN=Users,DC=example,DC=com, как показано в основных инструкциях, либо в формате bind-user@example.com, как показано в этом примере.

Глобальные каталоги

Moodle в настоящее время имеет ограниченную поддержку для нескольких доменных контроллеров; в частности, ожидается, что каждый из перечисленных серверов LDAP будет содержать идентичные наборы информации. Если у вас есть пользователи в нескольких доменах, это создаёт проблему. Одним из решений при работе с MS-AD является использование глобального каталога. Глобальный каталог предназначен для поиска по всему каталогу, когда домен требуемого объекта неизвестен.

Включение глобального каталога

Глобальный каталог доступен на серверах Active Directory Windows 2000 и Windows 2003. Чтобы включить его, откройте оснастку «Active Directory Sites and Services» MMC (Microsoft Management Console). Раскройте «Sites», а затем название сайта, содержащего лес активного каталога, который вы хотите использовать. Раскройте сервер, на котором вы хотите включить глобальный каталог, щёлкните правой кнопкой мыши «NTDS settings» и выберите вкладку «Свойства». Чтобы включить, просто установите флажок «Глобальный каталог». На сервере Windows 2000 необходимо перезапустить сервер (хотя вас об этом не попросят); на сервере Windows 2003 перезапуск сервера не требуется. В любом случае вам обычно придётся дождаться репликации леса AD, прежде чем глобальный каталог предложит представление всего леса AD. Изменения, внесённые в Active Directory, также будут подвергаться небольшой задержке из-за времени, необходимого для репликации. Если ваши AD-серверы защищены брандмауэром, порт 3268 должен быть открыт для серверов глобального каталога. Если ваша организация использует Microsoft Exchange, то весьма вероятно, что по крайней мере на одном контроллере домена уже включён глобальный каталог — Exchange 2000 и 2003 полагаются на глобальный каталог для получения информации об адресах, пользователи также обращаются к глобальному каталогу при использовании GAL (глобального списка адресов).

Домены дочерних элементов

Если в вашей организации есть основной домен example.org, сотрудники и студенты содержатся в двух дочерних доменах staff.example.org и students.example.org. Три домена (example.org, staff.example.org и students.example.org) имеют по контроллеру домена (dc01, dc02 и dc03 соответственно). Каждый контроллер домена содержит полное, доступное для записи представление только тех объектов, которые принадлежат его домену. Однако, если предположить, что глобальный каталог был включён (см. ниже) на одном из контроллеров домена (например, dc01), запрос к глобальному каталогу выявил бы соответствующие объекты из всех трёх доменов. Глобальный каталог автоматически поддерживается путём репликации в лесу активного каталога, его также можно включить на нескольких серверах (если, например, вам нужна отказоустойчивость / балансировка нагрузки).

Чтобы использовать это в Moodle для разрешения входа из нескольких доменов, всё просто. Глобальный каталог работает на порту 3268, в отличие от 389 для стандартных LDAP-