Корпоративное облако без паролей: подключаем Nextcloud к шлюзу доступа
Плагин user_ldap в Nextcloud обожает зависать при синхронизации и генерировать фантомные дубликаты пользователей. Разбираем, как перевести корпоративное файловое хранилище на чистый OIDC через OwnGate и решить проблему безопасного доступа раз и навсегда.

Если вы когда-нибудь настраивали модуль user_ldap в Nextcloud для компании больше 50 человек, у вас наверняка дергается глаз при словах «фоновый крон синхронизации».
Типичный жизненный цикл Nextcloud с прямым подключением к Active Directory выглядит так:
1. Вы тщательно вылизываете LDAP-фильтры: (&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))).
2. Всё запускается, сотрудники начинают грузить гигабайты договоров и макетов.
3. Через три месяца сотрудница из финотдела выходит замуж и меняет фамилию в паспорте и домене.
4. Nextcloud теряет связь с её старым UUID, создаёт рядом вторую папку вида ivanova_1928, а старые файлы и права расшаривания превращаются в цифровую тыкву.
5. А по ночам команда occ ldap:sync методично кладёт базу данных MariaDB на лопатки, пытаясь пересчитать членство в сотне вложенных групп домена.
Хватит это терпеть. Давайте разберём, как выкинуть архаичный плагин LDAP и подключить Nextcloud к современному шлюзу доступа по протоколу OpenID Connect (OIDC).
---
Почему OIDC выигрывает у прямого LDAP в Nextcloud
| Параметр | Старый плагин user_ldap | Современный user_oidc через OwnGate |
|---|---|---|
| Нагрузка на базу | Постоянные сканирования каталога и раздувание таблиц oc_ldap_* | Ноль фоновых запросов. Данные передаются в JWT-токене при входе |
| Второй фактор (2FA) | Требует настройки плагинов 2FA внутри Nextcloud для каждого юзера | Централизованно на шлюзе доступа для всех систем компании |
| Мобильные и десктоп клиенты | Хранят локальный пароль или требуют ручной генерации App Passwords | Нативный OAuth2 Authorization Flow через системный браузер |
| Увольнение сотрудника | Сессии в Nextcloud могут жить неделями до следующего цикла проверки | Мгновенный отзыв сессий и токенов по сигналу шлюза |
---
Пошаговая настройка Nextcloud + OwnGate
Шаг 1. Включаем официальное приложение user_oidc
В современных версиях Nextcloud (Nextcloud Hub 25+) используется официальный легковесный модуль user_oidc:
sudo -u www-data php occ app:install user_oidc
sudo -u www-data php occ app:enable user_oidc
Шаг 2. Регистрируем клиент в шлюзе OwnGate
В административной панели OwnGate создаём клиентское приложение:
- Client Identifier:
nextcloud-prod - Redirect URI:
https://cloud.company.local/apps/user_oidc/code - Scopes:
openid,profile,email,groups
Шаг 3. Регистрируем провайдера в Nextcloud
Вместо блуждания по веб-интерфейсу выполняем одну чистую команду через консоль occ:
sudo -u www-data php occ user_oidc:provider owngate \
--clientid="nextcloud-prod" \
--clientsecret="super-secret-token-from-owngate" \
--discoveryuri="https://auth.company.local/.well-known/openid-configuration" \
--scope="openid profile email groups"
Nextcloud сам скачивает метаданные шлюза по адресу .well-known/openid-configuration, находит публичные ключи для проверки подписи JWT (JWKS) и настраивает адреса авторизации.
Шаг 4. Настраиваем маппинг групп и атрибутов
В панели администратора Nextcloud (Параметры безопасности -> OpenID Connect) связываем поля:
- User ID mapping:
preferred_username(или неизменяемыйsubиз шлюза, чтобы смена фамилии никогда не ломала пути к файлам); - Display name mapping:
name; - Email mapping:
email; - Groups mapping:
groups.
Теперь сотрудники из доменной группы Designers при входе автоматически попадают в группу Designers в Nextcloud, получая доступ к общим проектным папкам без единого ручного клика сисадмина.
---
А как же мобильные приложения и WebDAV?
Это главный вопрос, который пугает инженеров: *«Если мы отключим пароли, как люди будут синхронизировать файлы на телефонах и подключать папки по WebDAV?»*.
Nextcloud Client (для Windows, macOS, Linux, iOS и Android) полностью поддерживает OAuth2 Authorization Code Flow с PKCE:
1. Пользователь открывает клиент и вводит адрес https://cloud.company.local;
2. Клиент автоматически открывает браузер с окном шлюза OwnGate;
3. Пользователь вводит корпоративный логин, пароль и одноразовый код TOTP;
4. Шлюз возвращает клиенту защищённый Refresh Token.
Пользователь ни разу не вводит пароль в сторонние формы, а админы видят каждое подключенное устройство в общем реестре сессий шлюза.
Отказ от прямого LDAP в пользу централизованного шлюза превращает капризное корпоративное облако в надёжный, быстрый и безопасный инструмент для всей компании.