По заказу одного клиента мне нужно было развернуть LDAP-систему, к которой планировалось подключить Atlassian Crowd (SSO). После сравнения LDAP-серверов OpenLDAP (C), ApacheDS (Java) и OpenDJ (Java), я решил остановиться на OpenDJ по нескольким причинам:
OpenDJ — это ответвление LDAP-сервера OpenDS, также как и Oracle Unified Directory, поэтому в сети можно найти решение проблем, общих для обоих продуктов.
Кроме LDAP-сервера, компания ForgeRock также предлагает собственное SSO-решение (OpenAM), так что если в будущем я захочу сменить SSO, можно попробовать использовать его. У ApacheDS такого решения нет.
У OpenDJ великолепная документация с множеством примеров (представлена в форматах EPUB, HTML, PDF и RTF). Документация, которую я нашёл у ApacheDS, скромнее или вообще находится в стадии написания (HTML, PDF). У OpenLDAP также отличная документация (представлена в форматах HTML и PDF).
У OpenDJ есть REST API поверх протокола LDAP. В ApacheDS подобный функционал поддерживается средствами SCIM. Я же планировал, что в разворачиваемой системе будет web-интерфейс с использованием REST API.
Команда разработчиков OpenDJ использует практику непрерывной интеграции (путём тестирования на Ubuntu и Windows). ApacheDS также ведёт непрерывную интеграцию в общей ветке Apache Jenkins, проводя тесты на Ubuntu.
Для тестирования производительности я написал скрипт LDAP jmeter и опубликовал его на Github. Нужно отметить, что у OpenDJ есть свои собственные инструменты тестирования, кроме того, протестировать LDAP-сервер можно с помощью Tsung.
Мы с моим братом проводили работу по изменению реализации PBKDF2 в OpenDJ, так что теперь она практически полностью идентична Crowd и ApacheDS, отличается от них только форматом печати итераций.