Введение
В этой статье мы настроим синхронизацию в OpenIDM между Active Directory и OpenDJ в обе стороны. Таким образом изменения, внесенные в Active Directory, будут синхронизированы в OpenDJ и наоборот, изменения в OpenDJ будут синхронизированы с Active Directory.
Настройка OpenIDM
Развертывание OpenIDM описано в документации. Предполагается, что OpenIDM у вас уже развернут и готов к настройке.
Настройка источников данных
Настройка Active Directory
Скачайте с GitHub файл подключения к Active Directory provisioner.openicf-adldap.json и скопируйте его в каталог conf
OpenIDM
Поменяйте свойства в соответствии с настройками вашего сервера Active Directory:
Настройка |
Описание |
---|---|
host |
Имя хоста/IP адрес сервера AD |
port |
Порт подключения (по умолчанию 389) |
ssl |
По умолчанию SSL не используется |
principal |
DN учетной записи, подключающейся к AD, например |
credentials |
Пароль учетной записи |
baseContexts |
Список DN, содержащих учетные записи для синхронизации, например, |
baseContextsToSynchronize |
Значение, идентичное |
accountSearchFilter |
Фильтр для поиска учетных записей |
accountSynchronizationFilter |
Фильтр для синхронизации учетных записей. |
Настройка OpenDJ
Если у вас не установлен OpenDJ, установите его, как описано в документации.
Скачайте с GitHub файл с тестовыми данными Example.ldif
Выполните первоначальную настройку OpenDJ и импортируйте в него данные командой
cd /path/to/opendj
./setup --cli \
--hostname localhost \
--ldapPort 1389 \
--rootUserDN "cn=Directory Manager" \
--rootUserPassword password \
--adminConnectorPort 4444 \
--baseDN dc=com \
--ldifFile /path/to/Example.ldif \
--acceptLicense \
--no-prompt
...
Configuring Directory Server ..... Done.
Creating Base Entry dc=com ..... Done.
Starting Directory Server ....... Done.
...
Скачайте с GitHub файл конфигурации подключения к OpenDJ provisioner.openicf-ldap.json и скопируйте его в каталог conf
OpenIDM.
Файл можно оставить без изменений, он уже настроен в соответствии с параметрами подключения к OpenDJ по умолчанию.
Настройка синхронизации Active Directory → OpenDJ
Откройте консоль администратора OpenIDM по ссылке http://localhost:8080/admin. Введите в поля логин и пароль значение openidm-admin
. В верхнем меню откройте Configure → Mappings и создайте Mapping ad → user как показано на рисунке ниже.

Откройте созданный Mapping systemAdAccounts_managedUser и на закладке Properties настройте соответствия полей как показано в таблице
Source |
Target |
---|---|
cn |
cn |
description |
description |
givenName |
givenName |
sn |
sn |
telephoneNumber |
telephoneNumber |
smAccountName |
userName |
На закладке Behaviors настройте поведение при различных ситуациях синхронизации.
Situation |
Action |
---|---|
Ambiguous |
Ignore |
Source Missing |
Delete |
Missing |
Ignore |
Found Already Linked |
Exception |
Unqualified |
Delete |
Unassigned |
Ignore |
Link Only |
Exception |
Target Ignored |
Ignore |
Source Ignored |
Ignore |
All Gone |
Ignore |
Confirmed |
Update |
Found |
Ignore |
Absent |
Create |
Сохраните изменения.
На закладке Mappings создайте еще один Mapping как показано на рисунке ниже

Откройте настройки созданного mapping managedUser_systemLdapAccounts и на закладке Properties настройте соответствия полей как указано в таблице ниже:
Source |
Target |
Transformation script |
Conditional updates |
---|---|---|---|
userName |
uid |
|
|
sn |
sn |
|
|
|
cn |
|
|
givenName |
givenName |
|
|
|
|
||
description |
description |
|
|
telephoneNumber |
telephoneNumber |
|
|
Для поля description
укажите значение по умолчанию Created in OpenIDM
На закладке Behaviors настройте поведение при различных ситуациях синхронизации:
Situation |
Action |
---|---|
Ambiguous |
Ignore |
Source Missing |
Delete |
Missing |
Ignore |
Found Already Linked |
Exception |
Unqualified |
Delete |
Unassigned |
Ignore |
Link Only |
Exception |
Target Ignored |
Ignore |
Source Ignored |
Ignore |
All Gone |
Ignore |
Confirmed |
Update |
Found |
Update |
Absent |
Create |
На этой же закладке в разделе Situational Event Scripts добавьте скрипт для события onCreate.
target.dn = 'uid=' + source.userName + ',ou=People,dc=example,dc=com';
Настройка синхронизации OpenDJ → Active Directory
Создайте синхронизацию OpenDJ → Managed User

В поле Linked mapping выберите managedUser_systemLdapAccounts.
Откройте созданный Mapping systemLdapAccount_managedUser и на закладке Properties настройте соответствия полей как показано в таблице
Source |
Target |
---|---|
sn |
sn |
givenName |
givenName |
uid |
userName |
telephoneNumber |
telephoneNumber |
На закладке Behaviors настройте поведение.
Situation |
Action |
---|---|
Ambiguous |
Ignore |
Source Missing |
Delete |
Missing |
Ignore |
Found Already Linked |
Exception |
Unqualified |
Delete |
Unassigned |
Ignore |
Link Only |
Exception |
Target Ignored |
Ignore |
Source Ignored |
Ignore |
All Gone |
Ignore |
Confirmed |
Update |
Found |
Ignore |
Absent |
Create |
Создайте Mapping Managed User → Active Directory

В поле Linked mapping выберите systemAdAccounts_managedUser.
В созданном Mapping managedUser_systemAdAccount настройте соответствие:
Source |
Target |
Transformation Script |
---|---|---|
userName |
dn |
|
givenName |
givenName |
|
sn |
sn |
|
|
cn |
|
description |
description |
|
telephoneNumber |
telephoneNumber |
|
userName |
sAMAccountName |
|
На закладке Behaviors настройте поведение аналогично шагу выше.
Проверка решения
Синхронизация Active Directory → OpenDJ
В консоли администратора выберите Mapping systemAdAccounts_managedUser и нажмите кнопку Reconcile.

В консоли администратора перейдите в список Manage → User. В списке пользователей появятся учетные записи из Active Directory

В консоли администратора выберите Mapping managedUser_systemLdapAccounts и нажмите кнопку Reconcile. После успешной синхронизации в OpenDJ появятся созданные в Managed Users записи из Active Directory.
Проверьте наличие учетной записи командой
./opendj/bin/ldapsearch -p 1389 -b dc=example,dc=com "(uid=aduser)" uid
dn: uid=aduser,ou=People,dc=example,dc=com
uid: aduser
Синхронизация OpenDJ → Active Directory
В консоли администратора в разделе Configure → Mappings выберите Mapping systemLdapAccount_managedUser. И нажмите кнопку Reconcile.
Перейдите в раздел Manage → User.
В списке пользователей появятся учетные записи из OpenDJ

Далее выберите Mapping managedUser_systemAdAccount и нажмите Reconcile.
После успешной синхронизации в Active Directory появятся учетные записи из OpenDJ.
Проверьте их наличие командой
ldapsearch -H ldap://ad.example.com -x -W -D "admin@example.com" -b "dc=example,dc=com" "(sAMAccountName=bjensen)" | grep dn
Enter LDAP Password:
dn: CN=bjensen,CN=Users,DC=example,DC=org