Введение
В данной статье мы настроим управление учетными записями Active Directory из OpenIDM. Рассмотрим типовой сценарий, когда служба HR оформляет на работу нового сотрудника, вносит его учетные данные в систему управления учетными записями (IDM) и из этой системы данные должны импортироваться в основной каталог. Как правило, это Active Directory.
Настройка OpenIDM
Как быстро развернуть OpenIDM было описано в этой статье. Поэтому, будем считать, что OpenIDM у вас уже развернут.
Настройка коннектора Active Directory.
Из каталога samples/provisioners поставки OpenIDM возьмите файл provisioner.openicf-adldap.json
и скопируйте его в каталог установки openidm/conf Измените значения конфигурации в соотвествии с вашим окружением:
Перейдите в консоль администратора Configure -> Connectors. В открывшемся списке выберите AD LDAP Connector и установите настройки согласно таблице
Настройка |
Описание |
Пример значения |
---|---|---|
host |
Имя хоста с AD |
ad.example.org |
port |
Порт подключения к AD |
636 |
ssl |
Использование зашифрованного соединения |
true |
principal |
Имя учетной записи, под которой будут осуществляться операции с AD |
DOMAIN/Administrator |
credentials |
Пароль учетной записи (строка, после сохранения значение будет зашифровано) |
|
baseContexts |
Список стартовых точек LDAP для поиска учетных записей |
CN=Users,DC=example,DC=org |
baseContextsToSynchronize |
Список стартовых точек LDAP для поиска учетных записей для синхронизации |
CN=Users,DC=example,DC=org |
accountSearchFilter |
Фильтр, отбирающий учетные записи пользователей |
(objectClass=user) |
accountSynchronizationFilter |
Фильтр, отбирающий учетные записи пользователейе для синхронизации |
(objectClass=user) |
groupSearchFilter |
Фильтр, отбирающий группы |
(objectClass=group) |
groupSynchronizationFilter |
Фильтр, отбирающий группы для синхронизации |
(objectClass=group) |
Для синхронизации паролей из OpenIDM в Active Directory необходимо, чтобы подключение было по защищенному протоколу. Для установки защищенного соединения, сохраните сертификат из Active Directory командой:
openssl s_client -showcerts -connect ad.example.org:636 </dev/null 2>/dev/null|openssl x509 -outform PEM > ad_cert.pem
И загрузите сертификат в trust store OpenIDM командой:
keytool -import -alias openidm-ad -file ad_cert.pem -storetype JKS -keystore truststore
Trust store находится в каталоге дистрибутива OpenIDM в каталоге openidm/security. Пароль для trust store по умолчанию - changeit
Так же для синхронизации паролей из OpenIDM добавьте в файл конфигурации коннектора Active Directory provisioner.openicf-adldap.json
в объект account поле password
после поля whenCreated
.
"password" : {
"type" : "string",
"nativeName" : "__PASSWORD__",
"nativeType" : "JAVA_TYPE_GUARDEDSTRING",
"flags" : [
"NOT_READABLE",
"NOT_RETURNED_BY_DEFAULT"
]
}
Проверка настройки Active Directory
В UI в настройках коннектора AD вверху справа нажмите кнопку с тремя точками и выберите пункт Data (account). Появится список учетных записей Active Directory
Настройка синхронизации учетных записей OpenIDM и Active Directory.
В консоли администратора перейдите Configure → Mappings. Нажмите кнопку New Mapping.
В source resource добавьте Managed Object → user. В target resource добавьте Connectors → ad.
И нажмите кнопку Create mapping
В консоли администратора перейдите Configure → Mappings → managedUser_systemAdAccount
В Attributes Grid настройте сопоставление атрибутов согласно таблице
Источник |
Приемник |
Trasnformation script |
Conditional updates |
---|---|---|---|
userName |
dn |
|
|
givenName |
givenName |
||
sn |
sn |
||
cn |
`source.displayName |
||
description |
description |
|
|
telephoneNumber |
telephoneNumber |
|
|
userName |
sAMAccountName |
||
password |
password |
На закладке Behaviors в разделе Policies выберите Default Actions и нажмите Save
Отправка пароля по Email
В OpenIDM есть возможность генерировать случайный пароль и отправлять его на email. Для настройки в консоли администратора перейдите Configure → System Preferences → Email. Введите настройки SMTP сервера и нажмите кнопку Save
Проверка решения
Создание учетной записи
Теперь, когда мы настроили подключение к Active Directory и синхронизацию между учетными записями OpenIDM и AD, давайте проверим работу решения. В консоли администратора перейдите Manage → User и создайте новую учетную запись, нажав кнопку New User. Заполните атрибуты нового пользователя и нажмите кнопку SaveУ
Учетную запись так же можно создать при помощи REST API OpenIDM
curl 'http://localhost:8080/openidm/managed/user?_action=create' \
-H 'X-OpenIDM-Username: openidm-admin' \
-H 'X-OpenIDM-Password: openidm-admin' \
-H 'Content-Type: application/json' \
--data-raw '{"mail":"jdoe@example.org","sn":"John","givenName":"Doe","telephoneNumber":"+7(999)123-45-67","userName":"idmUser"}' | json_pp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 357 0 242 100 115 1340 637 --:--:-- --:--:-- --:--:-- 2063
{
"_id" : "a250eb09-28a1-4fab-b338-e729986f38ec",
"_rev" : "2",
"accountStatus" : "active",
"effectiveAssignments" : [],
"effectiveRoles" : [],
"givenName" : "Doe",
"mail" : "jdoe@example.org",
"sn" : "John",
"telephoneNumber" : "+7(999)123-45-67",
"userName" : "idmUser"
}
Проверить наличие созданной учетной записи можно так же при помощи GET запроса к API
curl 'http://localhost:8080/openidm/managed/user?_queryFilter=true' \
-H 'X-OpenIDM-Username: openidm-admin' \
-H 'X-OpenIDM-Password: openidm-admin' | json_pp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 380 0 380 0 0 25112 0 --:--:-- --:--:-- --:--:-- 47500
{
"pagedResultsCookie" : null,
"remainingPagedResults" : -1,
"result" : [
{
"_id" : "a250eb09-28a1-4fab-b338-e729986f38ec",
"_rev" : "2",
"accountStatus" : "active",
"effectiveAssignments" : [],
"effectiveRoles" : [],
"givenName" : "Doe",
"mail" : "jdoe@example.org",
"sn" : "John",
"telephoneNumber" : "+7(999)123-45-67",
"userName" : "idmUser"
}
],
"resultCount" : 1,
"totalPagedResults" : -1,
"totalPagedResultsPolicy" : "NONE"
}
Учетная запись OpenIDM будет синхронизирована в Active Directory автоматически
Проверьте ее наличие в AD командой
ldapsearch -H ldap://ad.example.org.ru -x -W -D "admin@example.org" -b "dc=example,dc=org" "(sAMAccountName=idmUser)" | grep dn
Enter LDAP Password:
dn: CN=idmUser,CN=Users,DC=example,DC=org
Отправка пароля по Email
Если вы хотите установить пароль случайный пароль для Active Directory, перейдите на закладку Password и нажмите на кнопку Email Random Password.
Или при помощи POST запроса к API
curl 'http://localhost:8080/openidm/managed/user/a250eb09-28a1-4fab-b338-e729986f38ec?_action=resetPassword' \
-X 'POST' \
-H 'X-OpenIDM-Username: openidm-admin' \
-H 'X-OpenIDM-Password: openidm-admin' | json_pp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 242 0 242 0 0 100 0 --:--:-- 0:00:02 --:--:-- 101
{
"_id" : "a250eb09-28a1-4fab-b338-e729986f38ec",
"_rev" : "4",
"accountStatus" : "active",
"effectiveAssignments" : [],
"effectiveRoles" : [],
"givenName" : "Doe",
"mail" : "jdoe@example.org",
"sn" : "John",
"telephoneNumber" : "+7(999)123-45-67",
"userName" : "idmUser"
}
Будет сгенерирован новый пароль и отправлен пользователю на Email. Этот же пароль будет установлен для входа в Active Directory.
Удаление учетной записи
В консоли администратора перейдите Manage → User. Выберите учетную запись и нажмите Delete.
Во всплывающем диалоге нажмите кнопку Ок.
При помощи DELETE запроса к OpenIDM API:
curl 'http://localhost:8080/openidm/managed/user/a250eb09-28a1-4fab-b338-e729986f38ec' \
-X 'DELETE' \
-H 'X-OpenIDM-Username: openidm-admin' \
-H 'X-OpenIDM-Password: openidm-admin' | json_pp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 242 0 242 0 0 756 0 --:--:-- --:--:-- --:--:-- 773
{
"_id" : "a250eb09-28a1-4fab-b338-e729986f38ec",
"_rev" : "4",
"accountStatus" : "active",
"effectiveAssignments" : [],
"effectiveRoles" : [],
"givenName" : "Doe",
"mail" : "jdoe@example.org",
"sn" : "John",
"telephoneNumber" : "+7(999)123-45-67",
"userName" : "idmUser"
}
Проверим удаление учетной записи OpenIDM через REST API
curl 'http://localhost:8080/openidm/managed/user?_queryFilter=true' \
-H 'X-OpenIDM-Username: openidm-admin' \
-H 'X-OpenIDM-Password: openidm-admin' | json_pp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 138 0 138 0 0 7306 0 --:--:-- --:--:-- --:--:-- 11500
{
"pagedResultsCookie" : null,
"remainingPagedResults" : -1,
"result" : [],
"resultCount" : 0,
"totalPagedResults" : -1,
"totalPagedResultsPolicy" : "NONE"
}
Проверьте наличие учетной записи в Active Directory командой:
ldapsearch -H ldap://ad.example.org.ru -x -W -D "admin@example.org" -b "dc=example,dc=org" "(sAMAccountName=idmUser)" | grep dn | wc -l
Enter LDAP Password:
0
Как видно из вывода команды, учетная запись была удалена из AD.
SmileyK
Пароль отправляется на ящик пользователя в который он не может войти ?)
Alexx_B
Драйвера для сидирома находятся на прилагаемом компакт-диске (с)
К слову, ящика пользователя-то ещё не будет. Иначе систему надо увязывать с exchange или ещё каким-либо почтовиком (представляю себе завязку на коммунигейт, где апи нет)
SmileyK
выглядит так, что тут еще должно быть некое дополнение, для отправки пользователю на почту на его личную....