0

owncloud с авторизацией в Active Directory

Заметка о том как настроить авторизацию в MS Active Directory для сервиса owncloud.

Если Вам выпала честь организовать owncloud в корпоративной среде с Active Directory, надеюсь эта заметка Вам пригодится.
Установку owncloud я уже (описывал)[http://jnotes.ru/centos7-nginx-owncloud.html], причем (не один раз)[http://jnotes.ru/owncloud-server-setup.html].
Поэтому все внимание настройке авторизации в AD.

Для начала надо убедиться, что установлен необходимый пакет php-ldap.
rpm -qa | grep php-ldap или dpkg -l | grep php5-ldap в зависимости от Ваших предпочтений.

После этого включаю официальное приложение «LDAP user and group backend». Это можно сделать через web интерфейс в разделе «Apps» или командой
#sudo -u apache php occ app:enable user_ldap из DOCUMENT_ROOT owncloud
Кстати, рекомендую ознакомится с функционалом консольной команды occ.

После этого можно приступать непосредственно к настройке, которая осуществляется через web интерфейс в разделе «Admin»

Настройка LDAP user and group backend 0.7.1 выглядит следующим образом
owncloud ad server

Server

Настройки для сервера стандартные:

  • сервер AD
  • пользователь с правами на чтение каталога
  • пароль пользователя
  • Base DN для поиска пользователей
  • on/off ручное редактирование фильтров

Users

owncloud AD Users

Здесь задается фильтр пользователей, которые будут смогут авторизовываться в owncloud. В моем случае это:
(|(&(objectclass=person)(memberOf=CN=dit_oiti,OU=Groups,OU=MyOU,DC=domain,DC=local))(&(objectclass=person)(memberOf=CN=dit_adm_on_duty,OU=Groups,OU=MyOU,DC=domain,DC=local)))

Login Attributes

owncloud AD Login Attributes

Как я понял по задумке эти два фильтра должны друг друга дополнять, но по факту это не так. При тестировании выяснилось, что фильтр в «Users» не влияет на фильтр в «User attributes», что странно.
Так или иначе, я сделал фильтры одинаковыми с тем отличием, что в «User attributes» обязательно нужно указать sAMAccountName=%uid, или другое поле, куда будут подставляться данные с формы логина owncloud.

Groups

Во вкладке «Groups» можно задать фильтр, на основании которого будет формироваться список групп пользователей owncloud. Я пока тут ничего не трогал.

Advanced

Connection Settings

Тут можно настроить резервный сервер. По аналогии с основным.

«Directory Settings»
owncloud AD Directory Settings

User Display Name Field — какое поле из AD использовать для отображения полного имени пользователей
Base User Tree — НЕВАЖНО что записано в Base DN в основных настройках. owncloud смортит сюда. Вот так поворот =)
User Search Attributes — по каким полям осуществлять поиск пользователей. Очень полезная штука. По умолчанию, например при шаре файла пользователя можно найти его автодополнением по полному имени, но нельзя найти по логину. Именно тут это можно пофиксить.

Далее идут аналогичные настройки для групп, затем специфичные настройки для групп, настройки вложенности групп и ограничения поиска по каталогу.

Special Attributes

owncloud AD Special Attributes

Quota Field — поле в AD со значением квоты на хранилище для пользователя
Quota Default — значение квоты по умолчанию в байтах
Email Field — поле в AD со значением email адреса пользователя
User Home Folder Naming Rule — правило именования директории пользователя. По умолчанию это username. Обращаю внимание, что это означает UUID.

Expert

owncloud AD Expert

Internal Username Attribute — по какому полю генерировать внутренние уникальные идентификаторы пользователей. По умолчанию это UUID. И именно UUID и отображаетсся при просмотре списка пользователей.
UUID Attribute for Users — Служит для того, что бы переписать отображение UUID на более удобночитаемое поле, например sAMAccountName.
UUID Attribute for Groups — Аналогично для групп

И последнее очищение маппинга Ползователей и Групп.

Обращаю внимание, что на скриншоте в общем случае не корректная запись, которая появилась в результате экспериментов. Я точно уверен, что в моем случае sAMAccountName — уникальное поле, что в общем случае может быть не так.

Правильно sAMAccountName прописать в UUID Attribute for Users, а Internal Username Attribute оставить как есть — UUID

На этом настройка окончена. Буду рад, если Вам эта заметка пригодилась.

Alexey Egorychev

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.