Pull to refresh

eGroupWare + авторизация в AD + синхронизация с Outlook через SyncML

Reading time 4 min
Views 2.8K
Перешел на новую работу. Озадачили поставить систему документооборота. Решил сразу с заделом на будущее поставить eGroupWare. Для начала решил все это дело потестировать на Денвере в корпоративной Vista Business. Что было нужно для полноценной работы? Система документооборота, авторизация в Active Directory и синхронизация через Outlook.

Под катом грабли с которыми пришлось столкнуться.

Итак, eGroupWare 1.16.002, Microsoft Outlook 2007, Funambol Outlook Sync Client 8.0.5., PDC — Windows Server 2003.
Домен для определенности — home.local.
Компьютер на котором устанавливаем eGW — main и доступен по http по адресу _http://main.home.local
Пользователь имеющий право на чтение списка пользователей домена(теоретически любой пользователь) — ADUser. Пароль для него — ********
1. Устанавливаем eGW (миллионы раз это описано — даже лень писать).
2. Удовлетворяем все зависимости (проверяем это скриптом проверки установки).

3. В конфигурации заголовков прописываем домен (home.local).(Конфигурация заголовков доступна в _http://main.home.local/setup)
4. В конфигурации домена (home.local) домена настраиваем авторизацию через Active Directory. Проверьте что у Вас установлен модуль php_ldap и что он включен в php.ini. Продолжаем. Есть два пути

first way (tooooooooo easy)


Исключительно для Windows
а) Копируем из директории php библиотеки libeay32.dll и ssleay32.dll в \Windows\System32. Рестартуем Аpache
б) Выставляем настройки в конфигурации домена (домена в понимании eGW)

Выберите используемый вами тип идентификации: ADS
Выберите где вы будете хранить/получать информацию об учетных записях пользователей: SQL
Автоматическое создание учетных записей для идентифицированных пользователей: ДА
....
Имя сервера/IP адрес контроллера Домена: IP AD-сервера
Имя домена: home.local

second way (через тернии к звездам)


Авторизация / Учетные записи
Выберите используемый вами тип идентификации: LDAP
Выберите где вы будете хранить/получать информацию об учетных записях пользователей: SQL
Автоматическое создание учетных записей для идентифицированных пользователей: ДА

Используя LDAP:
Имя сервера LDAP: IP AD-сервера
LDAP контекст: OU=пользователи, DC=home, DC=local (тут, разумеется, может меняться информация в зависимости как у вас прописаны пользователи в AD, возможно это будет OU=Users)
Фильтр поиска учетных записей LDAP, по умолчанию: (& (objectClass=user)(objectCategory=person) (samaccountname=%user))
Контекст групп LDAP: OU=пользователи, DC=home, DC=local (повторяемся)
Корневой dn LDAP (поиск акаунтов и смена паролей): ADUser@home.local (наш пользователь для авторизации в AD, Active Directory в отличии от обычного LDAP-сервера не предоставляет анонимный доступ к своим данным)
Пароль LDAP: ********

Готово!

И пошли первые грабли.
5. Хитрости с администратором
Для того чтобы добавить первого админа
Идем в конфигурирование и прописываем логин уже залогинившегося человека. Ставим ему пароль тот же.
В интернетах написано, что можно выставить настройку в конфигурации чтобы пользователи первые залогинившееся пусть добавляются в Admins, после чего залогиниться снова и получить права администратора. ЭТО НЕ РАБОТАЕТ! Пользователь не добавиться в группу Default и не будет доступа даже к первой страничке =)

И самое вкусненькое на конец.
6. Синхронизация SyncML
Использовалась программа Funambol Outlook Sync Outlook Client (остальные либо платные, либо у меня не хватало мозгов в них разобраться)
Адрес для синхронизации _http://main.home.local/rpc.php
Переходим по нему смотрим на ошибки. У меня было так.
You need to set mbstring.func_overload to 0 for rpc.php.
You should access this URL only with a SyncML enabled device.
Что должны переходить по этому урлу только SyncML клиентом мы и так знаем, а вот про option для php это интересно.
С учетом что в корне лежит .htaccess в котором явно
# multibyte extension: needed for utf-8
php_value mbstring.func_overload 7

Ну чтож обманываем его, прописываем в .htaccess
# just for SyncML
<Files rpc.php>
php_value mbstring.func_overload 0


Теперь лезем в клиента Funambol -> Ctrl+T -> Account
Location _http://main.home.local/rpc.php
Username USER (в данном случае используется логин того человека, чьи данные мы хотим синхронизировать)
Password ********


Идем в Sync



EGroupware был настроен таким образом, чтобы при типе записи ./sX данные сервера обновляли данные клиента, а.при типе записи ./sifX происходило разрешение конфликтов.
Смотрим табличку.
Тип приложения Cервер перезаписывает клиента Разрешение конфликтов
Адресная книга ./scard ./sifcontacts
Календарь ./scal ./sifcalendar
Задачи ./stask ./siftasks
Заметки ./snote ./sifnotes

Ну и ставим как удобно для себя.
Смотрим также нижнюю табличку по типам
Тип приложения Тип записи Тип данных
Адресная книга ./contacts
./sifcontacts
./scard
text/vCard
text/x-s4j-sifc
text/x-s4j-sifc
Календарь ./calendar
./events
./sifcalendar
./scal
text/calendar
text/calendar
text/x-s4j-sife
text/x-s4j-sife
Задачи ./tasks
./siftasks
./stask
text/calendar
text/x-s4j-sift
text/x-s4j-sift
Заметки ./notes
./sifnotes
./snote
text/x-vnote
text/x-s4j-sifn
text/x-s4j-sifn

Я, например, поставил так
Тип приложения Значение Примечание
Contacts ./sifcontacts
Calendar ./sifcalendar Тип SIF оставляем
Tasks ./siftasks Тип SIF оставляем
Notes ./sifnotes


Ну вроде б работает. Вопросы и главное, критика, приветствуются.
p.s. Если нужно могу написать статью уже о том, как поднимался не тестовый, а рабочий сервер на Ubuntu.
Tags:
Hubs:
+3
Comments 6
Comments Comments 6

Articles