В современных IT-инфраструктурах единая точка аутентификации — это не просто удобство, а необходимость. Когда пользователи работают с десятками сервисов, повторный ввод паролей в каждом из них быстро превращается в проблему: растёт нагрузка на службу поддержки, появляются слабые и дублирующиеся пароли, а администратор теряет контроль над доступом.

💡 Присоединяйтесь к нашим сообществам!

Будьте в курсе новых статей, обновлений и полезных материалов:

Ранее мы уже настроили Nextcloud и контроллер домена на базе Samba AD DC.

Nextcloud — популярная open-source платформа для совместной работы с файлами и данными — поддерживает интеграцию с каталогом LDAP/LDAPS, что позволяет связать его с контроллером домена на базе Samba AD.

Настроим аутентификацию пользователей Nextcloud через Samba AD DC по протоколу LDAPS, обеспечив защищённое соединение и централизованное управление учётными записями.

Технические характеристики развертывания

  • Домен: ITSCH.LAN
  • IP контроллера домена (Samba AD DC): 192.168.0.11/24
  • IP сервера Nextcloud: 192.168.0.17
  • Версия Nextcloud: 34.0.4
  • Учетная запись для привязки (Bind DN): Administrator

Важно: Samba AD по умолчанию требует защищённого соединения для LDAP-операций. Мы будем использовать протокол LDAPS (порт 636), что является стандартом безопасности.

1. Подготовка контроллера домена (Samba AD DC)

Для безопасного соединения серверу Nextcloud необходимо доверять сертификату контроллера домена.

Получаем открытый ключ центра сертификации (CA) Samba.

  1. Подключаемся к контроллеру домена по SSH под пользователем root.
  2. Выводим содержимое файла корневого сертификата:
cat /var/lib/samba/private/tls/ca.pem
  1. Копируем весь вывод (от -----BEGIN CERTIFICATE----- до -----END CERTIFICATE-----) в буфер обмена.

2. Подготовка сервера Nextcloud

На сервере с Nextcloud необходимо установить необходимые PHP-модули и добавить сертификат Samba в список доверенных.

  1. Подключаемся к серверу Nextcloud по SSH под пользователем root.
  2. Устанавливаем необходимые пакеты (если они еще не установлены):
apt-get update
apt-get install -y php-ldap ldap-utils
  1. Создаём директорию для пользовательских сертификатов:
mkdir -p /usr/local/share/ca-certificates/samba
  1. Создаём и открываем на редактирование файл для сертификата:
mcedit /usr/local/share/ca-certificates/samba/itsch-ca.crt
  1. Вставляем скопированное на Шаге 1 содержимое сертификата. Сохраняем файл F2, закрываем редактор F10.
  2. Обновляем хранилище доверенных сертификатов в системе:
update-ca-certificates

Должно появиться сообщение вида 1 added, 0 removed; done.

  1. Перезапускаем веб-сервер для применения изменений в PHP:
systemctl restart apache2

3. Создание и настройка конфигурации LDAP через консоль

Настройка через веб-интерфейс Nextcloud часто приводит к ошибкам из-за экранирования специальных символов (например, $ в пароле) или проблем с определением базового DN. Настройка через консольную утилиту occ является наиболее надежной.

  1. Переходим в корневую директорию Nextcloud (у нас это /var/www/html):
cd /var/www/html
  1. Создаём новую пустую конфигурацию LDAP. Система присвоит ей идентификатор (обычно s01):
php occ ldap:create-empty-config
  1. Последовательно выполняем следующие команды для настройки параметров.

Внимание: В команде с паролем (ldapAgentPassword) обязательно используйте одинарные кавычки '...', чтобы специальные символы (например, $) не были интерпретированы оболочкой Bash как переменные.

  1. Указываем хост с обязательным префиксом ldaps://:
php occ ldap:set-config s01 ldapHost "ldaps://192.168.0.11"
  1. Указываем порт LDAPS:
php occ ldap:set-config s01 ldapPort "636"
  1. Указываем учетную запись для подключения к LDAP (Bind DN):
php occ ldap:set-config s01 ldapAgentName "CN=Administrator,CN=Users,DC=itsch,DC=lan"
  1. Указываем пароль:
php occ ldap:set-config s01 ldapAgentPassword 'НАШ_ПАРОЛЬ'
  1. Указываем базовый DN для поиска:
php occ ldap:set-config s01 ldapBase "DC=itsch,DC=lan"
php occ ldap:set-config s01 ldapBaseUsers "DC=itsch,DC=lan"
php occ ldap:set-config s01 ldapBaseGroups "DC=itsch,DC=lan"
  1. Настраиваем фильтры (исключаем компьютеры, оставляем только пользователей и группы):
php occ ldap:set-config s01 ldapUserFilter "(&(objectclass=person)(objectclass=user)(!(objectclass=computer)))"
php occ ldap:set-config s01 ldapGroupFilter "(&(objectclass=group))"
php occ ldap:set-config s01 ldapLoginFilter "(&(objectclass=person)(objectclass=user)(sAMAccountName=%uid))"
  1. Указываем атрибуты для отображения и входа:
php occ ldap:set-config s01 ldapExpertUsernameAttr "sAMAccountName"
php occ ldap:set-config s01 ldapUserDisplayName "displayName"
php occ ldap:set-config s01 ldapEmailAttribute "mail"
  1. Разрешаем игнорирование проверки сертификата (на случай нюансов с самоподписанным сертификатом Samba):
php occ ldap:set-config s01 turnOffCertCheck "1"
  1. Активируем конфигурацию:
php occ ldap:set-config s01 ldapConfigurationActive "1"

4. Проверка конфигурации

После внесения настроек необходимо проверить, может ли Nextcloud подключиться к контроллеру домена и найти пользователей.

  1. Проверяем статус подключения:
php occ ldap:test-config s01

Ожидаемый результат: The configuration is valid and the connection could be established!

  1. Проверяем, видит ли Nextcloud конкретного пользователя:
php occ ldap:check-user usertest

Ожидаемый результат: Сообщение об успехе или информация о том, что пользователь найден.

5. Финальная настройка через веб-интерфейс

Хотя основная настройка выполнена через консоль, веб-интерфейс удобен для визуальной проверки и тонкой настройки отображения.

  1. Открываем веб-интерфейс Nextcloud под учетной записью глобального администратора.
  2. Переходим в Параметры сервера → Администрирование → LDAP/AD интеграция.

Параметры сервера Nextcloud

LDAP/AD интеграция в Nextcloud

  1. Если все настройки верны, то при нажатии на кнопку Проверить конфигурацию появится индикатор зелёного цвета и надпись «Конфигурация настроена верно. Связь установлена!».

Проверка конфигурации LDAP в Nextcloud

6. Первый вход пользователя и важные примечания

  1. Открываем страницу входа Nextcloud (рекомендуется использовать режим инкогнито в браузере).
  2. Вводим логин доменного пользователя (значение атрибута sAMAccountName, например, usertest) и его доменный пароль.

Как работает создание пользователей в Nextcloud:

  • При первом успешном входе через LDAP Nextcloud автоматически создаёт «теневую» локальную учетную запись для этого пользователя в своей базе данных.
  • Эта запись связывается с уникальным UUID пользователя из Active Directory (objectGUID).
  • Конфликты: если пользователь с таким же логином (sAMAccountName) уже существовал в Nextcloud как локальный пользователь до настройки LDAP, Nextcloud, как правило, успешно «подхватывает» его и привязывает к LDAP. Пароль для входа при этом начнёт проверяться через контроллер домена.
  • Если пользователь был удалён из Active Directory, его учетная запись в Nextcloud будет помечена как отключённая при следующей синхронизации фоновых задач (Cron).

Заключение

Интеграция Nextcloud с контроллером домена Samba AD настроена. Пользователи домена могут входить в Nextcloud, используя свои доменные учётные записи, а при первом входе автоматически создаются связанные локальные профили. Управление доступом теперь осуществляется централизованно — через Active Directory. При удалении пользователя из домена его учётная запись в Nextcloud будет автоматически отключена при следующей синхронизации.

🚀 Понравилась статья?

Подписывайтесь на наши соцсети, чтобы не пропустить новые полезные материалы!

Следующая запись Предыдущая запись