Введение
Эта статья является продолжением статьи про управление учетными записями Active Directory через OpenIDM. В этой статье мы настроем OpenIDM таким образом, чтобы добавлять и убирать пользователей из групп Active Directory.
Настройка Active Directory
В панели управления пользователями Active Directory создайте новую группу. Пусть эта новая группа будет называться Managers
. В нее мы будем добавлять и удалять учетные записи.
Вот собственно и все. Перейдем к настройке OpenIDM
Настройка OpenIDM
Будем считать, что у вас уже развернут OpenIDM и настроен коннектор к Active Directory, а так же настроена синхронизация учетных записей OpenIDM в Active Directory из предыдущей статьи.
Получение групп в OpenIDM из Active Directory
Чтобы в OpenIDM можно было изменять группы пользователей, нужно синхронизировать информацию о нужных группах Active Directory. В консоли администратора в верхнем меню перейдите Configure → Mappings и создайте новый Mapping групп Active Directory в роли OpenIDM.
Настройте Mapping:
Properties → Attributes Grid:
Source |
Target |
Properties |
---|---|---|
cn |
name |
|
description |
description |
default value: no description |
dn |
_id |
Association → Reconciliation Query Filters → Source Query установите в cn eq "Managers"
для того, чтобы не синхронизировать все группы из Active Directory, а только нужную созданную группу.
Behaviors → Policies → Current Policy установите в Default Actions
Сохраните изменения и нажмите кнопку Reconcile
После синхронизации в консоли администратора перейдите в верхнем меню Manage → Role и убедитесь, что группа Managers загружена из Active Directory.
Теперь нужно настроить синхронизацию из OpenIDM в Active Directory таким образом, чтобы синхронизировались участники группы.
Настройка синхронизации из OpenIDM в Active Directory
В консоли администратора перейдите в меню Configure → Mappings и создайте новый Mapping Role в group Active Directory.
При создании установите Linked Mapping в systemAdGroup_managedRole.
Настройте новый Mapping:
Properties → Attributes Grid
Source |
Target |
Properties |
---|---|---|
_id |
dn |
|
member |
Transformation Script, см далее |
Active Directory хранит членов группы в атрибуте member, но OpenIDM хранит группы в объекте учетной записи, поэтому для определения DN членов группы нужно использовать скрипт
var res = []
//getting role mebmers from OpenIDM
var members = openidm.query("managed/role/" + source._id + "/members", {"_queryFilter": "true"});
if(members.result && members.result.length > 0) {
for (var i = 0; i < members.result.length; i++) {
var userId = members.result[i]["_ref"];
var userInfo = openidm.read(userId);
//calculate DN from user info
var userDN = 'CN=' + userInfo.userName + ',CN=Users,DC=example,DC=com'
res.push(userDN);
}
}
res
Association → Reconciliation Query Filters → Target Query установите в cn eq "Managers"
Behaviors → Policies → Current Policy установите в Default Actions
Проверка решения
Создайте учетную запись в OpenIDM или используйте уже существующую.
Синхронизируйте ее используя Mapping managedUser_systemAdAccount
, чтобы она появилась в Active Directory.
ldapsearch -H ldap://ad.example.org -x -W -D "admin@example.org" -b "dc=example,dc=org" "(sAMAccountName=jdoe)" | grep dn
Enter LDAP Password:
dn: CN=jdoe,CN=Users,DC=example,DC=org
В консоли администратора OpenIDM перейдите Manage → Role, выберите Role Manager и добавьте в нее эту учетную запись.
В консоли администратора OpenIDM перейдите Configure → Mappings. Откройте managedRole_systemAdGroup
и нажмите Reconcile. После синхронизации пользователь jdoe
будет принадлежать группе Managers
ldapsearch -H ldap://ad.example.org -x -W -D "admin@example.org" -b "DC=example,DC=org" "(sAMAccountName=jdoe)" | grep memberOf
Enter LDAP Password:
memberOf: CN=Managers,CN=Users,DC=example,DC=org