16 причин для выбора OpenDJ

Andrea Stani, 17 марта 2014 года. Оригинал статьи и обсуждение по адресу http://kaosktrl.wordpress.com/2014/03/17/16-reasons-to-choose-opendj/.

По заказу одного клиента мне нужно было развернуть LDAP-систему, к которой планировалось подключить Atlassian Crowd (SSO). После сравнения LDAP-серверов OpenLDAP (C), ApacheDS (Java) и OpenDJ (Java), я решил остановиться на OpenDJ по нескольким причинам:

  1. Это Open Source-продукт, выпускаемый под лицензией CDDL 1.0; ApacheDS выпускается под лицензией Apache, а OpenLDAP — под собственной лицензией.
  2. У него есть коммерческая поддержка по всему миру, в том числе здесь, в Бельгии; у ApacheDS только одна компания, осуществляющая коммерческую поддержку, у OpenLDAP также есть поддержка по всему миру.
  3. OpenDJ — это ответвление LDAP-сервера OpenDS, также как и Oracle Unified Directory, поэтому в сети можно найти решение проблем, общих для обоих продуктов.
  4. Проект имеет ясную стратегию развития, описанную также в wiki. Стратегия развития есть и у ApacheDS.
  5. Кроме LDAP-сервера, компания ForgeRock также предлагает собственное SSO-решение (OpenAM), так что если в будущем я захочу сменить SSO, можно попробовать использовать его. У ApacheDS такого решения нет.
  6. OpenDJ поставляется в пакетах ZIP, RPM и DEB. У ApacheDS есть пакеты для всех операционных систем. OpenLDAP также представлен в виде пакетов во многих операционных системах.
  7. У OpenDJ великолепная документация с множеством примеров (представлена в форматах EPUB, HTML, PDF и RTF). Документация, которую я нашёл у ApacheDS, скромнее или вообще находится в стадии написания (HTML, PDF). У OpenLDAP также отличная документация (представлена в форматах HTML и PDF).
  8. У OpenDJ есть полнофункциональный набор утилит командной строки. Средства работы из командной строки ApacheDS беднее (упор делается в основном на Apache Directory Studio или на использование LDAP-клиента).
  9. В комплект поставки входит java-клиент (не web). У ApacheDS есть GUI, основанный на Eclipse (Directory Studio).
  10. У OpenDJ есть REST API поверх протокола LDAP. В ApacheDS подобный функционал поддерживается средствами SCIM. Я же планировал, что в разворачиваемой системе будет web-интерфейс с использованием REST API.
  11. OpenDJ поддерживает репликацию "из коробки". ApacheDS и OpenLDAP также поддерживают репликацию.
  12. Похоже, у OpenDJ очень хорошая производительность (почти на уровне OpenLDAP), по крайней мере в сравнении с ApacheDS.
  13. OpenDJ поддерживает виртуальный атрибут IsMemberOf, удобный для проверки принадлежности пользователя группам. В ApacheDS этот функционал до сих пор не реализован.
  14. У OpenDJ есть реализация схемы хранения паролей PKCS5S2 (смотрите PBKDF2), используемая в Crowd по умолчанию, хотя реализация этой схемы отличается от используемых в Crowd и ApacheDS, а в OpenLDAP вообще нет такой схемы (как и некоторых других схем хранения паролей).
  15. Команда разработчиков OpenDJ использует практику непрерывной интеграции (путём тестирования на Ubuntu и Windows). ApacheDS также ведёт непрерывную интеграцию в общей ветке Apache Jenkins, проводя тесты на Ubuntu.
  16. У команды разработчиков OpenDJ есть рекомендации по написанию кода с правилами проверки стиля. Некоторые рекомендации есть и у разработчиков ApacheDS, а в OpenLDAP их совсем немного.

Для тестирования производительности я написал скрипт LDAP jmeter и опубликовал его на Github. Нужно отметить, что у OpenDJ есть свои собственные инструменты тестирования, кроме того, протестировать LDAP-сервер можно с помощью Tsung.

Мы с моим братом проводили работу по изменению реализации PBKDF2 в OpenDJ, так что теперь она практически полностью идентична Crowd и ApacheDS, отличается от них только форматом печати итераций.

Надеюсь, Вам понравится OpenDJ!