api.ldap Работа с LDAP
Методы для работы с LDAP можно использовать:
-
в действиях по событиям:
- в консоли, см.Скрипты, выполняемые в консоли;
- в задаче планировщика, см.Скрипт задачи планировщика.
Подробнее о работе с LDAP см. Синхронизация с LDAP
-
api.ldap.open(url, user, passwd)
Установление соединения с сервером LDAP.
def ctx = api.ldap.open("ldap://localhost:389/", "cn=admin,dc=localhost", "123")
-
ctx.setSkipCertVerification(true)
Выключение проверки сертификатов (если используется ldaps и серверный сертификат самоподписанный).
-
ctx.create(dn, objectClass, attributes)
Создание записи в LDAP.
ctx.create("cn=" + subject.lastName + ",ou=test,dc=localhost", ['inetOrgPerson', 'top' ], ['givenName' : subject.firstName, 'sn' : subject.lastName , 'cn' : subject.lastName ]);
-
ctx.edit(dn, attributes)
Редактирование записи в LDAP.
ctx.edit("cn=" + subject.lastName + ",ou=test,dc=localhost", [ 'givenName' : subject.firstName ])
-
ctx.delete(dn)
Удаление записи в LDAP.
ctx.delete("cn=" + oldSubject.lastName + ",ou=test,dc=localhost");
-
ctx.rename(oldDn, newDn)
Переименование записи в LDAP.
-
ctx.search(baseDn, search)
ctx.search(baseDn, search, attributesToReturn)
ctx.search(baseDn, search, attributesToReturn, attrValueDelimiter)
Поиск записи в LDAP. Поиск осуществляется только на уровне указанной директории.
Параметры:
-
baseDn — базовая директория, ветка от которой начинается поиск данных. Важен корректный порядок OU!. String.
Пример: 'CN=Users,DC=nau,DC=local'.
-
search — карта параметров для поиска. Map<String, Object>.
Пример: ['title' : 'название'].
-
attributesToReturn — коллекция названий атрибутов, которые необходимо вернуть. @Nullable Iterable<String>.
Пример: ['title', 'parent', 'number']
-
attrValueDelimiter — разделитель значений атрибута, если значение не одно. По умолчанию "; ". String.
Пример: '', ''.
Возвращает коллекцию объектов, со всеми атрибутами, если не было указанно конкретных атрибутов в attributesToReturn.
Пример. Установить соединение с ldap. Найти указанную группу и получить значение атрибута member:
def conn = api.ldap.open('ldap://localhost:389','ivanov@nau.local','123qwery');
def props = [:];
props.distinguishedName = 'CN=amgroup,CN=Users,DC=nau,DC=local';
def attrs = ['member'];
conn.search('CN=Users,DC=nau,DC=local', props, attrs, '#');
-
-
ctx.search(baseDn, search)
ctx.search(baseDn, search, attributesToReturn)
ctx.search(baseDn, search, attrValueDelimiter)
Поиск записи в LDAP. Поиск осуществляется рекурсивно.
Параметры:
-
baseDn — базовая директория, ветка от которой начинается поиск данных. Важен корректный порядок OU!. String.
Пример: 'CN=Users,DC=nau,DC=local'.
-
search — строка для фильтрации. String.
Пример: "(title=${'название'})".
-
attributesToReturn — коллекция названий атрибутов, которые необходимо вернуть. @Nullable Iterable<String>.
Пример: ['title', 'parent', 'number']
-
attrValueDelimiter — разделитель значений атрибута, если значение не одно. По умолчанию "; ". String.
Пример: '', ''.
Возвращает коллекцию объектов, со всеми атрибутами, если не было указанно конкретных атрибутов в attributesToReturn.
-
Пример. Скрипт модифицирует соответствующую запись о сотруднике в LDAP, или создает новую, если такой записи нет.
def ctx = api.ldap.open("ldap://localhost:389/", "cn=admin,dc=localhost", "123");
def r = ctx.search("ou=test,dc=localhost", ['cn' : subject.lastName]);
if (r.size() == 0) {
ctx.create("cn=" + subject.lastName + ",ou=test,dc=localhost",
[ 'inetOrgPerson', 'top' ],
[ 'givenName' : subject.firstName,
'sn' : subject.lastName ,
'cn' : subject.lastName ]);
} else {
ctx.edit("cn=" + subject.lastName + ",ou=test,dc=localhost",
[ 'givenName' : subject.firstName ]);
}