Files
amneziavpnphp/LDAP_FEATURE.md
T
infosave2007 3d9cc02963 feat: Add LDAP/Active Directory integration with group-based access control
- Add PHP LDAP extension to Docker container
- Implement LdapSync class for authentication and user synchronization
- Add automatic user sync via cron (every 30 minutes)
- Create role-based access control system (admin, manager, viewer)
- Add LDAP configuration UI in settings
- Support for both Active Directory and OpenLDAP
- Group-to-role mapping with flexible configuration
- Add 50+ translations (EN + RU) for LDAP features
- Include comprehensive setup documentation
- Enhance Auth::login() with LDAP fallback
- Add LDAP settings page with connection testing
2025-11-10 18:01:52 +03:00

3.9 KiB

LDAP Integration - Feature Branch

Реализовано

Базовая инфраструктура:

  • PHP LDAP расширение в Dockerfile
  • Миграции БД (ldap_configs, user_roles, ldap_group_mappings)
  • Класс LdapSync.php - подключение, аутентификация, синхронизация
  • Интеграция в Auth.php - авто-переключение между LDAP/локальной авторизацией
  • Cron задача синхронизации (каждые 30 мин)
  • UI страница настроек LDAP (templates/settings/ldap.twig)
  • Документация LDAP_SETUP.md

Функционал:

  • Авторизация через LDAP/Active Directory
  • Автоматическая синхронизация пользователей
  • Маппинг LDAP групп на роли (admin/manager/viewer)
  • Тест подключения к LDAP
  • Fallback на локальную авторизацию

⚠️ Требуется доработка

Критичное:

  1. Добавить маршруты в public/index.php:

    $router->add('GET', '/settings/ldap', [SettingsController::class, 'ldapSettings']);
    $router->add('POST', '/settings/ldap/save', [SettingsController::class, 'saveLdapSettings']);
    $router->add('POST', '/settings/ldap/test', [SettingsController::class, 'testLdapConnection']);
    
  2. Создать методы в controllers/SettingsController.php:

    • ldapSettings() - показать страницу
    • saveLdapSettings() - сохранить конфигурацию
    • testLdapConnection() - протестировать подключение
  3. Добавить переводы в миграции 002-006 (ru, en, es, de, fr, zh):

    • ldap_settings
    • enable_ldap_auth
    • test_connection
    • ldap_host / ldap_port / base_dn / bind_dn
    • sync_interval
    • ldap_group_mappings

Опционально:

  • Логи LDAP операций в отдельный файл
  • Валидация LDAP настроек на фронтенде
  • Более детальные сообщения об ошибках

🧪 Тестирование

Локально:

# Пересобрать контейнеры с LDAP расширением
docker-compose build

# Применить миграции
docker-compose exec web php -r "require 'inc/Config.php'; require 'inc/DB.php'; DB::runMigrations();"

# Тест LDAP подключения
docker-compose exec web php bin/sync_ldap_users.php

Проверить:

  1. Страница /settings/ldap открывается
  2. Сохранение настроек работает
  3. Тест подключения выполняется
  4. Авторизация через LDAP (если настроен тестовый LDAP сервер)

📋 TODO перед слиянием в master

  • Добавить маршруты и контроллер
  • Добавить переводы для всех языков
  • Протестировать с реальным LDAP/AD сервером
  • Проверить обратную совместимость (без LDAP всё работает как раньше)
  • Обновить README.md с информацией о LDAP

🔒 Безопасность

  • Пароли LDAP не шифруются (TODO: добавить шифрование в БД)
  • Опциональная функция - не влияет на существующий функционал
  • Fallback на локальную авторизацию
  • TLS/SSL поддержка для LDAP

📖 Документация

См. LDAP_SETUP.md для:

  • Примеры конфигурации AD/OpenLDAP
  • Настройка групп безопасности
  • Troubleshooting
  • Best practices