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 по нескольким причинам:
- Это Open Source-продукт, выпускаемый под лицензией CDDL 1.0; ApacheDS выпускается под лицензией Apache, а OpenLDAP — под собственной лицензией.
- У него есть коммерческая поддержка по всему миру, в том числе здесь, в Бельгии; у ApacheDS только одна компания, осуществляющая коммерческую поддержку, у OpenLDAP также есть поддержка по всему миру.
- OpenDJ — это ответвление LDAP-сервера OpenDS, также как и Oracle Unified Directory, поэтому в сети можно найти решение проблем, общих для обоих продуктов.
- Проект имеет ясную стратегию развития, описанную также в wiki. Стратегия развития есть и у ApacheDS.
- Кроме LDAP-сервера, компания ForgeRock также предлагает собственное SSO-решение (OpenAM), так что если в будущем я захочу сменить SSO, можно попробовать использовать его. У ApacheDS такого решения нет.
- OpenDJ поставляется в пакетах ZIP, RPM и DEB. У ApacheDS есть пакеты для всех операционных систем. OpenLDAP также представлен в виде пакетов во многих операционных системах.
- У OpenDJ великолепная документация с множеством примеров (представлена в форматах EPUB, HTML, PDF и RTF). Документация, которую я нашёл у ApacheDS, скромнее или вообще находится в стадии написания (HTML, PDF). У OpenLDAP также отличная документация (представлена в форматах HTML и PDF).
- У OpenDJ есть полнофункциональный набор утилит командной строки. Средства работы из командной строки ApacheDS беднее (упор делается в основном на Apache Directory Studio или на использование LDAP-клиента).
- В комплект поставки входит java-клиент (не web). У ApacheDS есть GUI, основанный на Eclipse (Directory Studio).
- У OpenDJ есть REST API поверх протокола LDAP. В ApacheDS подобный функционал поддерживается средствами SCIM. Я же планировал, что в разворачиваемой системе будет web-интерфейс с использованием REST API.
- OpenDJ поддерживает репликацию "из коробки". ApacheDS и OpenLDAP также поддерживают репликацию.
- Похоже, у OpenDJ очень хорошая производительность (почти на уровне OpenLDAP), по крайней мере в сравнении с ApacheDS.
- OpenDJ поддерживает виртуальный атрибут IsMemberOf, удобный для проверки принадлежности пользователя группам. В ApacheDS этот функционал до сих пор не реализован.
- У OpenDJ есть реализация схемы хранения паролей PKCS5S2 (смотрите PBKDF2), используемая в Crowd по умолчанию, хотя реализация этой схемы отличается от используемых в Crowd и ApacheDS, а в OpenLDAP вообще нет такой схемы (как и некоторых других схем хранения паролей).
- Команда разработчиков OpenDJ использует практику непрерывной интеграции (путём тестирования на Ubuntu и Windows). ApacheDS также ведёт непрерывную интеграцию в общей ветке Apache Jenkins, проводя тесты на Ubuntu.
- У команды разработчиков OpenDJ есть рекомендации по написанию кода с правилами проверки стиля. Некоторые рекомендации есть и у разработчиков ApacheDS, а в OpenLDAP их совсем немного.
Для тестирования производительности я написал скрипт LDAP jmeter и опубликовал его на Github. Нужно отметить, что у OpenDJ есть свои собственные инструменты тестирования, кроме того, протестировать LDAP-сервер можно с помощью Tsung.
Мы с моим братом проводили работу по изменению реализации PBKDF2 в OpenDJ, так что теперь она практически полностью идентична Crowd и ApacheDS, отличается от них только форматом печати итераций.
Надеюсь, Вам понравится OpenDJ!