Утилита каталогов Apple.

Службы каталогов предоставляют центральное место для хранения пользователей и паролей для корпоративных и корпоративных пользователей. Вот как использовать его на macOS.
Сегодня многим предприятиям необходимо централизованное место для хранения информации о пользователях, паролях, группах, компьютерах и других сетевых объектах.
В большинстве организаций эта потребность удовлетворяется путем использования либо серверов LDAP (Lightweight Directory Access Protocol), либо, в случае Windows Server, служб каталогов Microsoft, построенных на LDAP, Active Directory.
Когда в 1997 году Apple купила NeXT и выпустила Mac OS X в 2000 году, она предложила собственную службу каталогов, включенную в OS X, под названием NetInfo.
Вместе с NetInfo Apple выпустила приложение NetInfo Manager, которое позже было переименовано в Directory Utility. Это позволяло пользователям получать доступ к серверам NetInfo для получения информации о пользователях и группах.
В совокупности эти службы известны как службы каталогов. Идея служб каталогов заключается в том, чтобы объединить всю информацию о пользователях и устройствах в одном месте и использовать эти службы для авторизации пользователей для доступа к сетевым ресурсам.
NetInfo не пользовался популярностью у пользователей и администраторов, и был удален из Mac OS X в версии 10.4 Tiger. Вместо этого Apple начала переходить на LDAP, поскольку он стал стандартом для служб каталогов.
Сервер Mac OS X
После того, как Apple выпустила Mac OS X Server, который включал в себя сервер LDAP и другие службы, Mac OS X Server был позже объединен в дополнительное приложение, названное просто «Сервер». Приложение можно было загрузить из Mac App Store и добавить в розничную версию macOS.

Оригинальная розничная упаковка Mac OS X Server.
OS X Server позволял организациям запускать собственный сервер LDAP для хранения информации о пользователях и авторизации пользователей. Поддержка сервера была прекращена в 2022 году.
Открытый каталог Apple
Реализация LDAP от Apple называется Apple Open Directory и является ответвлением проекта OpenLDAP.
Apple Open Directory также включает реализацию сервера аутентификации на основе билетов Kerberos.
В macOS Apple Open Directory управляется фоновым демоном opendirectoryd.
Microsoft Active Directory
В это время Microsoft разработала собственный сервер служб каталогов под названием Active Directory (AD), который она представила в Windows Server 2000.
Active Directory — одна из наиболее широко используемых служб каталогов в корпоративных и организационных сетях.
AD предоставляет ряд услуг, включая LDAP, Windows Domain Services, Group policy, шифрование, сертификат и Federation Services. Сегодня Microsoft также предоставляет облачный каталог и службу информации о пользователях под названием Microsoft Entra ID.
Все эти службы каталогов вместе могут использоваться для запроса и аутентификации пользователей и информации о пользователях для использования сетевых ресурсов, а также для поиска контактной информации конкретных пользователей.
В службах каталогов база данных хранимых объектов пользователей или устройств называется доменом.
Фреймворки и разработка
Для разработки Apple предоставляет два фреймворка, которые можно добавить в любой проект Xcode и связать с созданным приложением Mac: DirectoryServices.framework и OpenDirectory.framework.
Чтобы добавить эти фреймворки в ваш проект Xcode, перейдите к Target в вашем проекте Xcode, затем нажмите кнопку «+» на панели Frameworks, Libraries, and Embedded Content на вкладке General. Из появившегося листа добавьте DirectoryServices.framework и OpenDirectory.framework
Для дополнительного доступа к службам каталогов UNIX добавьте также статическую библиотеку libcodedirectory.tbd.
API Apple Open Directory удивительно прост: всего 9 классов и один протокол (QDQueryDelegate). Используя объекты ODNode, QDQuery, QDRecord и ODSession, вы можете запустить сеанс OD, настроить его (ODConfiguration), а затем запросить сервер служб каталогов для управления записями OD.
После отправки запроса в OD результаты возвращаются через протокол QDQueryDelegate, который состоит из одного метода:
func query(ODQuery!, найденные результаты: [Any]!, ошибка: (любая ошибка)!)
— запрос:найденные результаты:ошибка:
Чтобы добавить эту функциональность в ваше приложение, объявите класс, который соответствует протоколу QDQueryDelegate, затем реализуйте метод query:foundResults:error. Внутри метода ваш код может решить, как обрабатывать любые возвращаемые данные и ошибки.

Добавление фреймворков служб каталогов в Xcode.
После завершения запроса OD этот метод будет содержать исходный объект запроса, все результаты для этого запроса и возвращаемую ошибку, если таковая имеется.
Утилита каталогов
Первоначально Apple поставляла приложение Directory Utility в папке /Utilities, входящей в состав macOS.
Однако сегодня приложение спрятано в /System/Library/Core Services/Applications — скорее всего, из-за стремления организаций перейти в облако.
Если вы хотите использовать Службу каталогов, не пытайтесь скопировать или переместить ее в другое место, так как любые скопированные версии работать не будут.
Вместо этого создайте псевдоним для приложения, перетащив его в Dock в Finder на Mac. Вы также можете создать псевдоним для приложения, удерживая Command-Option и перетаскивая приложение в нужное место на диске.
Если вы используете службы Kerberos, в той же папке есть еще одно приложение под названием Ticket Viewer. Ticket Viewer прост и предоставляет только возможность добавлять и удалять удостоверения, устанавливать одно удостоверение по умолчанию и менять пароль.
Использование утилиты каталогов
Directory Utility предоставляет несколько услуг. Вы можете напрямую подключиться к любому поддерживаемому серверу Directory Services, используя пункт меню File->Connect, или вы можете использовать одну из трех вкладок в верхней части главного окна:
Редактор каталога политик поиска услуг
Для использования функций редактора каталогов вам потребуется пароль администратора для служб, которые вы хотите редактировать.
Вкладка «Службы» предоставляет два простых варианта: Active Directory или LDAPv3.
Нажмите значок замка в нижней части окна, затем выберите один из них для доступа к определенному типу сервера. Щелчок по маленькому значку карандаша в нижней части окна отображает лист для служб каталогов на доступных серверах.
Вы также можете создать новую конфигурацию служб каталогов, нажав кнопку «Создать» на листе.

Вкладка «Службы» в утилите каталогов.
На вкладке Search Policy вы можете просматривать информацию об аутентификации и контактах, используя автоматический, локальный или пользовательский путь поиска. Вкладка Search Policy позволяет просматривать информацию для пользователей в разных доменах каталога.
Вкладка Редактор каталогов позволяет вам редактировать информацию о службах каталогов напрямую, хотя, как упоминалось ранее, для этого вам понадобится пароль администратора. Будьте осторожны с вкладкой Редактор каталогов, так как на ней легко редактировать важную информацию.
Вы можете просматривать практически любую информацию о службах каталогов, которую только можно себе представить, на вкладке Редактор, включая настройки для десятков различных демонов, служб и сетей. Если вы не будете осторожны, вы можете внести изменения в службы, которые могут сделать части вашего Mac или сервера неработоспособными.

Вкладка «Редактор каталогов» в утилите каталогов.
LDAP — довольно сложная тема, и ее освоение может занять некоторое время. Для более краткого обзора посетите LDAPWiki.









