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, или создает новую, если такой записи нет.

Copy
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 ]);
}