NextCloud — это свободное и открытое веб-приложение для синхронизации данных и совместной работы с файлами в стиле Dropbox. Замечательный инструмент для создания личного, семейного или корпоративного файлового хранилища.
Облачные хранилища данных сейчас широко распространены и используются повсеместно для корпоративных и личных нужд.
Сегодня будем настраивать LDAP аутентификацию для NextCloud. Поскольку этот проект отпочковался от OwnCloud, инструкция подойдёт для обоих.
Документация:
https://docs.nextcloud.com/server/24/admin_manual/configuration_user/user_auth_ldap.html
Подготовка
Для работы LDAP требуется модуль PHP LDAP. Устанавливаем php-ldap. Возможности:
- Поддержка LDAP групп
- Расшарить файл пользователю или группе
- Доступ через WebDAV и Nextcloud Desktop Client
- Версионность, внешнее хранилище и другие функции Nextcloud
- Бесшовное соединение с Active Directory без дополнительных настроек
- Поддержка основных групп в Active Directory
- Авто-определение атрибутов LDAP (DN, email, и порт LDAP сервера)
- Только доступ на чтение к LDAP (редактирование и удаление пользователей LDAP не поддерживается)
- Опционально: Возможность пользователю сменить пароль в LDAP через Nextcloud
На странице приложений включаем "LDAP user and group backend".
Создаём в AD (это моя тестовая структура, ваша может отличаться).
- Сервисную учётную запись для чтения каталога LDAP:
- ldap-user
- Группы доступа пользователям NextCloud:
- nextcloud-users
- nextcloud-admins
Настройка LDAP
Переходим под локальным админом NextCloud в Настройки → Параметры сервера → LDAP/AD интеграция.
Сервер
Указываем путь к основному серверу LDAP. Можно использовать LDAP (389 порт по умолчанию) или LDAPS (636 порт по умолчанию). NextCloud может автоматически определить порт соответствующей кнопкой. При необходимости можно добавить несколько серверов.
- ldaps://ldap.ab.local 636
Указываем имя сервисного пользователя и пароль. Сохранить учётные данные.
- ldap-user
Определяем основную базу поиска DN. Можно определить основную базу DN кнопкой. В ней будут искаться пользователи, группы, сервисная учётная запись. DN для пользователей и групп потом можно переопределить в дополнительных настройках. При необходимости можно вверси LDAP фильтры вручную. Чем меньше объектов будет обрабатывать NextCloud, тем быстрее будет работать аутентификация и LDAP/AD интеграция. Можно проверить базу поиска DN.
- OU=Company,DC=domain,DC=local
Продолжить.
Пользователи
Настраиваем критерии, по которым проходит поиск пользователей в AD. Указываем классы объектов.
- organizationalPerson
- person
- user
Выбираем группы, в которых искать пользователей. Группы выбираются из основного DN, или DN пользователей, переопределённый в дополнительных настройках.
- nextcloud-users
- nextcloud-admins
Можно проверить настройки и пересчитать пользователей. При необходимости LDAP фильтр можно изменить.
Продолжить.
Учётные данные
Настраиваем учётные данные для входа. Можно входить по логину или по email.
Указываем дополнительный атрибут для входа.
- sAMAccountName
При необходимости LDAP фильтр можно изменить. Можно проверить настройки и логин пользователя.
Продолжить.
Группы
Настраиваем критерии, по которым проходит поиск групп в AD. Указываем классы объектов.
- group
Выбираем группы.
- nextcloud-users
- nextcloud-admins
Можно проверить настройки и пересчитать группы. При необходимости LDAP фильтр можно изменить.
Дополнительно
Настройки подключения
Здесь можно задать дополнительные опции LDAP.
- Указать адрес и порт резервного LDAP сервера, которые будут использоваться при недоступности основного.
- Можно здесь принудительно отключить основной сервер и использовать только резервный.
- Отключить проверку SSL
- Указать время хранения кэша, по умолчанию TTL = 600.
Настройка каталога
Здесь можно задать дополнительные опции каталога LDAP.
- Атрибут отображаемого имени пользователя
- Атрибут вторичного имени (в скобках), я здесь указываю email
- DN каталога пользователей
- Атрибуты поиска пользователей (cn, name). Насчёт mail ещё подумаю.
- Поле отображаемого имени группы. Кстати, смюню-ка я его на description, а в описаниях групп напишу "Участники NextCloud" и "Администраторы NextCloud".
- DN каталога групп
- Атрибуты поиска групп (cn, description)
- Как искать пользователя в группах: member (AD)
- URL участников динамической группы. Этого параметра нет в документации. URL для поиска членства в группе.
- Вложенные группы — да
- Страничный размер блоков, по умолчанию 500
- Галка, разрешающая пользователю менять пароль в LDAP.
- DN парольной политики
Специальные атрибуты
- Поле квоты — можно задать атрибут пользователя и рулить квотами через LDAP
- Квота по умолчанию. Ограничить размер диска пользователям. Значение по умолчанию.
- Поле адреса email, пишу mail
- Правило именования домашнего каталога пользователя. По умолчанию NextCloud хранит данные так: "/var/www/nextcloud/data/username". Можно изменить на значение из атрибута LDAP.
- Поле-заполнитель "$home". Нет в документации.
Домашний каталог пользователя должен быть доступен, иначе пользователь не сможет войти в NextCloud.
Можно проверить конфигурацию.
Эксперт
Атрибут для внутреннего имени. Этот атрибут будет использоваться как уникальный идентификатор пользователя для NextCloud. Укажу SAMAccountName.
Также укажу UUID-атрибут для пользователей: objectguid.
Больше ничего здесь не использую.
Можно проверить конфигурацию.
Заключение
Я обычно применяю эти настройки для интеграции AD и NextCloud. Для каждого конкретного случая настройки отличаются.
NextCloud сохраняет изменения в настройках автоматически, при изменении значения поля.
Встречаются баги, например, когда создаёшь группу в AD в процессе настройки, а она не появляется. Это кэш. Закрыть всё, подождать минут 10, повторить.