Libdomain - это открытая библиотека, которая умеет обрабатывать запросы к различным службам каталогов, таких как Microsoft AD, Samba AD, OpenLDAP, FreeIPA. Зная API только одной библиотеки, можно получить доступ ко всем поддерживаемым ею службам каталогов. На текущий момент мы реализовали поддержку OpenLDAP, а к концу 2023 года планируем поддержать Microsoft AD и Samba AD.
Не нужно писать API под каждую службу каталогов. Достаточно использовать библиотеку libdomain, чтобы разработать продукт, который адаптирован, чтобы управлять любыми доменами или позволяющий мигрировать с одного типа домена на другой. Что особенно актуально в связи с текущей политикой импортозамещения.
Как это работает? Клиент передаёт API библиотеки запрос. Библиотека его обрабатывает и трансформирует в подходящий запрос для каждой конкретной службы каталогов. В библиотеке есть модуль, который распознает, с которой именно службой каталогов идут взаимодействия. Служба каталогов принимает запрос и отвечает на него. Библиотека обрабатывает и возвращает клиенту унифицированный ответ.
Клиенту не нужно заботиться о формате сообщения для конкретной службы каталогов. За него всё сделает библиотека.
В библиотеке реализована поддержка наиболее популярных служб каталогов с различными схемами. Вокруг этого модуля реализована связка базовой библиотеки libdomain с фреймворками, такими как QT и .Net. Сама же библиотека представляет собой обвязку вокруг LDAP.
Библиотека libldap оперирует записями, у каждой из которых есть атрибуты. Сама библиотека не диференцирует записи как сущности или объекты домена. Для корректного отображения записи ранее в нашем приложении admc был разработан модуль adldap, в котором были реализованы критерии вычисления сущности по набору специфических атрибутов.
На текущий момент этот модуль перемещен из приложения admc в библиотеку libdomain, таким образом все запросы приложение admc адресует API библиотеки libdomain, а она в свою очередь перенаправляет их либо библиотеке libldap, либо libldb.