LDAPRecord — это PHP фреймворк, созданный для бесшовной интеграции с LDAP серверами, включая Active Directory, непосредственно в ваши Laravel приложения. Она предоставляет элегантный и удобный интерфейс для выполнения различных операций, таких как аутентификация пользователей, поиск и управление записями в каталоге. Больше никаких сложных LDAP запросов! 🎉

Active Directory (AD) – это служба каталогов от Microsoft, которая хранит информацию о пользователях, компьютерах и других ресурсах в сети.
LDAP (Lightweight Directory Access Protocol) – это протокол, используемый для доступа к этой информации. LDAPRecord значительно упрощает взаимодействие с AD в Laravel.
Преимущества использования LDAPRecord:
- Простота использования: Библиотека предоставляет интуитивно понятный API, который позволяет разработчикам быстро начать работу с LDAP. Вы сможете сфокусироваться на бизнес-логике вашего приложения, а не на тонкостях LDAP.
- Интеграция с Laravel: LDAPRecord разработана специально для Laravel, что обеспечивает плавную интеграцию с фреймворком.
- Поддержка различных LDAP серверов: Библиотека не ограничивается только Active Directory и поддерживает другие LDAP-совместимые серверы.
- Гибкость и расширяемость: LDAPRecord предлагает множество настроек и возможностей для расширения функциональности.
Установка:Установить LDAPRecord можно через Composer:
1 | composer require directorytree/ldaprecord-laravel |
Пример использования (Синхронизация компьютеров):
С помощью LdapRecord-Laravel вы можете легко импортировать и синхронизировать объекты LDAP в таблицу базы данных с помощью заданной модели Eloquent. Это полезно для импорта групп, участников и многого другого.
В этом примере мы будем импортировать группы LDAP в таблицу базы данных Computers
.
Наша таблица компьютеров содержит несколько столбцов, однако для импорта в неё объектов LDAP нам нужно добавить еще два дополнительных столбца базы данных:
Колонна | Причина |
---|---|
guid | Это нужно для хранения вашего объекта LDAP objectguid . Это необходимо для поиска и синхронизации вашего объекта LDAP с базой данных. |
domain | Это нужно для хранения имени подключения вашего объекта LDAP. Это необходимо для хранения настроенного подключения LDAP для объекта. |
Создание миграции
Создайте миграцию, чтобы добавить эти столбцы в нашу computers таблицу:
1 | php artisan make:migration add_ldap_columns_to_computers_table |
Затем мы добавим новые обязательные столбцы в миграцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::table('computers', function (Blueprint $table) { $table->string('guid')->unique()->nullable(); $table->string('domain')->nullable(); }); } public function down(): void { Schema::table('computers', function (Blueprint $table) { $table->dropColumn(['guid', 'domain']); }); } }; |
После завершения настройки вышеупомянутой миграции убедитесь, что вы запустили ее:
1 | php artisan migrate |
Настройка модели Eloquent
Чтобы импортер мог правильно взаимодействовать с вашей моделью Eloquent, вы должны применить следующую функцию и интерфейс к модели Eloquent, которую вы используете для импорта.

Теперь ваша модель готова к импорту.
Запуск импорта
Определение Атрибутов Синхронизации
Перед запуском импорта необходимо определить массив конфигурации. Этот массив конфигурации должен содержать массив sync_attributes
со ссылками на столбец базы данных (ключ) и атрибут LDAP (значение):
1 2 3 4 5 6 7 8 9 10 11 12 13 | $config = [ 'sync_attributes' => [ 'cn' => 'cn', 'lastlogon' => 'lastlogon', 'dnshostname' => 'dnshostname', 'lastlogontimestamp' => 'lastlogontimestamp', 'distinguishedname' => 'distinguishedname', 'whencreated' => 'whencreated', 'logoncount' => 'logoncount', 'operatingsystem' => 'operatingsystem', 'operatingsystemversion' => 'operatingsystemversion' ], ]; |
Выполнение импорта
Чтобы выполнить импорт, вы должны использовать класс LdapRecord\Laravel\Import\Synchronizer
.
Этот класс принимает в качестве первого параметра ваш класс модели Eloquent, а в качестве второго — массив конфигурации:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | use App\Models\Computer as EloquentComputer; use LdapRecord\Laravel\Import\Synchronizer; use LdapRecord\Models\ActiveDirectory\Computeras LdapComputer; protected function runSycnComputersAction() { $config = [ 'sync_attributes' => [ 'cn' => 'cn', 'lastlogon' => 'lastlogon', 'dnshostname' => 'dnshostname', 'lastlogontimestamp' => 'lastlogontimestamp', 'distinguishedname' => 'distinguishedname', 'whencreated' => 'whencreated', 'logoncount' => 'logoncount', 'operatingsystem' => 'operatingsystem', 'operatingsystemversion' => 'operatingsystemversion' ], ]; // Create the synchronizer. $synchronizer = new Synchronizer(EloquentComputer::class, $config); // Import each group from the directory. foreach (LdapComputer::get() as $comp) { $synchronizer->run($comp)->save(); } } |
Вышеописанное можно легко поместить в запланированное задание, если вы хотите, чтобы импорт выполнялся в фоновом режиме вашего приложения.
Этот пример был создан на основе документации
Заключение
LDAPRecord — это мощный инструмент, который значительно упрощает работу с Active Directory в Laravel. Рекомендую попробовать! 👍
#laravel #php #ldap #activedirectory #webdev #программирование #библиотека #ldaprecord #аутентификация #каталог