Установка Openfire с поддержкой общего списка пользователей для нескольких доменов (лесов) Вступление В процессе написания статьи я получил
информацию, о том что для объединения двух доменов (лесов) в настройках Openfire можно указать параметр
ldap.alternateBaseDN, в котором нужно прописать второй домен. При этом список пользователей, согласно документации, будет объединятся в один. Но разобравшись в теме увидел целую кучу подводных камней. Во-первых, таким способом можно объединить только два домена, во-вторых, судя по форуму разработчика, из второго домена не подтягиваются соответствующие ему группы, в-третьих, структура обоих доменов должна быть строго говоря идентична (например, для фильтрации пользователей по группе), ну и в-четвертых, на версии 3.6.4 лично у меня этот параметр не отработал.
Предполагается, что вы уже поставили
NTLM патч и настроили Openfire для работы с одним из доменов.
1. Подготовка доменов Для полноценной работы между доменами требуется установить двухсторонние доверительные отношения. Для этого на каждом контроллере домена необходимо запустить консоль
domain.msc и в свойствах домена указать доверенный домен (потребуются привилегии администратора домена). После установления двухсторонних доверительных отношений необходимо проверить, что все сделано правильно и через поиск по Active Directory можно найти пользователей соседних доменов.
2. Установка ADAM ADAM является своеобразным прокси, к которому можно подключить несколько доменов для получения общего списка пользователей. Этим его функционал не ограничивается, но именно эта функция нам потребуется прежде всего.
Перед установкой ADAM стоит определиться на каком сервере вы будете его разворачивать. ADAM позволяет установить свои службы на любые свободные порты, поэтому вы можете развернуть его непосредственно на контроллере домена. В моем случае я разворачивал ADAM на отдельном сервере Jabber, который не выполняет роль контроллера домена, поэтому я мог использовать стандартные порты для Active Directory - TCP 389 и TCP 636 (SSL). Учтите этот нюанс при установке ADAM.
Загрузить ADAM можно с сайта Microsoft по
следующей ссылке.
3. Настройка ADAM После установки ADAM требуется создать его рабочую инстанцию. Делается это в меню
Программы\ADAM. При запуске мастера для создания инстанций делаем следующее:
Нажимаем
Next Выбираем
A unique instance, нажимаем
Next Вводим любое название инстанции, например
OpenfireADProxy, нажимаем
Next Указываем порты LDAP и LDAP SSL (если стандартные порты будут заняты - при установке будет предложено использовать порты 50000 и 50001 соответственно), нажимаем
Next Выбираем
Yes, create an application directory partition и вводим название новой директории в ADAM, например,
DC=jabber,DC=local, нажимаем
Next Указываем каталог для хранения базы данных (можно оставить по-умолчанию), нажимаем
Далее Указываем под какой учетной записью стартовать ADAM (можно оставить по-умолчанию
Network service account), нажимаем
Next Указываем учетную запись для управления базой данных ADAM (я использовал пользователя, под которым вошел в систему), нажимаем
Next Указываем какие политики импортировать в новую инстанцию: выбираем в список
MS-InetOrgPerson.LDF, MS-User.LDF, MS-UserProxy.LDF, нажимаем
Next Нажимаем
Next, инстанция ADAM установлена
4. Загрузка данных в ADAM Первое с чего надо начать - создать базовую схему ADAM. Для этого требуется объединить изначальную базовую схему ADAM и целевого домена. Для объединения схем сделаем следующее:
Откроем консоль
ADAM Tools Command Prompt из меню Программа\ADAM
Вводим
adschemaanalyzer и нажимаем
Enter В меню
File выбираем
Load target schema и указываем хост, порт и учетные данные целевого домена
В меню
File выбираем
Load base schema и указываем только хост и порт ADAM инстанции
В меню
Schema выбираем пункт
Mark all non-present elements as included В меню
File выбираем
Create LDIF file, указываем имя файла (например,
Adam1.ldf)
Записываем полученный файл в каталог %WINDIR%\ADAM
Импортируем в
ADAM Tools Command Prompt полученную схему
Код: ldifde -i -s localhost -c "CN=Configuration,DC=X" #ConfigurationNamingContext -f Adam1.ldf