Вот некоторые отличия, которые я знаю по макушке. OpenLDAP можно назвать универсальным сервером LDAP, похожим на серверы LDAP многих других поставщиков (Fedora DS 389, Oracle Internet Directory, IBM Tivoli Directory Server). Active Directory немного более приспособлена для набора продуктов Microsoft (т. Е. Работает домен Microsoft). Есть плюсы и минусы каждого.
OpenLDAP после установки пуст и не имеет структуры (называемой DIT). У него даже нет корневого входа из коробки. AD будет поставляться с базовой структурой и имеет инструменты GUI, готовые для вас, чтобы начать заполнять пользователей. OpenLDAP и другие пользователи ожидают, что вы создадите DIT вручную, поэтому вам придется проектировать структуру. Таким образом, вам придется планировать, куда вы будете помещать своих пользователей, группы, роли и думать о ACL или делегировании ветвей, если ваш проект включает в себя подобные вещи. Например, у вас может быть домен для widgets.com. В AD отгруженная структура будет выглядеть примерно так:
+ dc=widgets,dc=com
|-- cn=Computers
|-- cn=Users
|-- cn=Groups
В OpenLDAP (или других реализациях vanilla) вы можете создавать свой DIT разными способами. Вы можете следовать соглашению о компоненте домена (dc = foo, dc = bar) или использовать что-то организованное по географическому региону (o = foo, c = bar). Это не имеет большого значения, но вы должны пойти с одним или другим. AD использует соглашение DC и не дает вам выбора, но другие серверы LDAP могут следовать любому соглашению. Если вы пытаетесь вписаться в большой домен MS, я бы придерживался соглашения DC для согласованности и простоты интеграции. Но для этого примера мы представим организацию нашей компании (o) в одной стране (c) без регионов или подразделений (ou):
+ o=widgets,c=us
|-- cn=Machines
|-- cn=People
|-- cn=Groups
|-- cn=Roles
Затем вы можете расширить свою схему, если это будет необходимо. Если вы хотите расширить свою схему AD, AD потребует от вас добавления элементов схемы через консольный плагин MMC редактора схем Active Directory (создайте пользовательскую MMC). После этого все довольно просто. Сначала определите ваши атрибуты, а затем классы объектов. OpenLDAP требует от вас написания LDIF (также сначала требуются атрибуты, а затем классы объектов). Или используйте Apache Directory Studio с OpenLDAP, который является отличным графическим интерфейсом и инструментом администрирования и упрощает использование OpenLDAP почти AD.
AD не позволяет запрашивать все на 389 анонимно. Если вы хотите получить информацию о схеме (называемую каталогом), вам нужно запросить 3289 и пройти аутентификацию. Это напоминает мне о скрытии DIB и DIT в LDAP, но я не знаю, пытается ли AD сделать то же самое здесь.
AD имеет ограничение по умолчанию для запроса в 10000. Если вы хотите сосать все за один раз, вы должны использовать элементы управления подкачкой на своем клиенте или в своем коде или изменить ограничение запросов по умолчанию на контроллере домена, который вы ищете. Обратите внимание, что управление подкачкой может быть проблематичным. Я заставил их работать в java с использованием библиотек Netscape, но некоторые клиенты LDAP, похоже, работают неправильно, хотя и утверждают, что поддерживают элементы управления подкачкой (YMMV).
Аутентификация AD немного странная. Вы можете аутентифицироваться как имя пользователя в формате электронной почты (-D username @ domain) или можете использовать полный DN пользователя. Если есть способ сделать это в OpenLDAP, я не знаю, как это сделать, но я бы не стал беспокоиться. Это странно по сравнению с другими серверами LDAP. Обычный LDAP обычно следует формату DN (cn = имя пользователя, cn = Пользователи, o = виджеты, c = us).
Я думаю, короче говоря, AD является самоуверенным, а OpenLDAP - универсальным. И из-за этого AD легко встать, но OpenLDAP может быть более гибким.