LDAP-справочник
CityScreen Deals публикует своих сотрудников и группы сотрудников как LDAP-справочник. Почтовые серверы, VPN-шлюзы и другие системы читают его, чтобы найти адреса электронной почты, раскрыть списки рассылки и проверить пароли, так что люди используют одну и ту же учётную запись везде.
Администратор создаёт учётные записи, с которыми подключаются другие системы, — LDAP-потребителей. Интегратор или тот, кто обслуживает другую систему, настраивает её по описанным здесь адресу, base DN и учётным данным.
Эта функция лицензируется. Если лицензия вашей организации её не включает, обратитесь в CityScreen.
Что такое справочник
Справочник доступен только для чтения: любая операция записи отклоняется с сообщением «The LDAP interface is read-only». Он работает по LDAPS — это TLS с первого байта, а StartTLS отклоняется. Что видит подключение, определяют роли учётной записи, от имени которой выполнен bind.
Сервер работает по LDAP версии 3 и принимает только простой bind. Он отвечает на bind, search, compare и расширенную операцию «Who am I?» (RFC 4532). Любая другая операция отклоняется.
Адрес
| Параметр | Значение |
|---|---|
Сервер |
|
Протокол |
LDAPS с TLS 1.2 или 1.3. |
Base DN |
Один компонент |
Настраивайте клиенты по имени с ldap., на которое выпущен сертификат.
Подключение по IP-адресу не работает.
Если у адреса вашей организации нет доменного имени, например потому что это IP-адрес, то у справочника нет base DN, и он не существует. Тогда на странице LDAP-потребители показано «Нет: у адреса этого экземпляра нет доменного имени, поэтому у LDAP-интерфейса нет базового DN.»
Дерево справочника
В дереве три организационные единицы ниже base DN.
| Единица | Класс записи | RDN | Атрибуты |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Атрибут без значения в запись не включается.
mail и uid сравниваются без учёта регистра.
Публикуются только группы сотрудников, в которых есть участники.
member перечисляет только сотрудников, которые входят в группу напрямую.
RDN группы — её машинное имя, которое никогда не меняется, а её mail — адрес электронной почты группы.
Поиск с пустым DN в качестве основы и областью base возвращает root DSE, в котором base DN указан в namingContexts.
Кто может подключаться
LDAP-потребитель выполняет bind с DN своей записи и своим секретом. Сотрудник выполняет bind с DN своей записи и либо паролем учётной записи, либо паролем приложения.
| Кто | Bind DN | Пароль |
|---|---|---|
LDAP-потребитель |
|
Секрет потребителя, который начинается с |
Сотрудник |
|
Пароль учётной записи или пароль приложения, который начинается с |
Анонимные bind и bind с пустым паролем отклоняются.
Пароль учётной записи отклоняется для сотрудника, который использует двухэтапную проверку, в том числе для сотрудника, чья организация её требует, и для сотрудника, у которого истёк срок действия пароля. Такие сотрудники выполняют bind с паролем приложения, который создают в разделе Аккаунт > Пароли приложений. См. Токены доступа и пароли приложений и Двухэтапная проверка. Панель Использование в почтовом клиенте на вкладке Пароли приложений показывает Bind DN (имя пользователя) и Базовый DN сотрудникам, которым разрешено просматривать LDAP-потребителей.
Bind, в котором сервер отклоняет DN, секрет или пароль, получает ответ invalidCredentials (49) с сообщением «Invalid credentials» независимо от причины.
Bind другим методом, не простым, получает ответ authMethodNotSupported (7), а bind с LDAP версии 2 — protocolError (2).
Если в вашей организации этой функции нет, каждый bind получает ответ unwillingToPerform (53) с сообщением «The LDAP interface is not available under the license of this instance».
Попытки bind записываются в журнал входов с точкой входа «LDAP-привязка (bind)».
Что видит подключение
Учётная запись, выполнившая bind, видит записи, которые разрешают ей просматривать её роли.
Для записей сотрудников нужно право просматривать сотрудников, для записей групп — право просматривать группы сотрудников, для записей потребителей — право просматривать LDAP-потребителей.
Действует область права: учётная запись, которой разрешено просматривать только собственную запись сотрудника, видит в ou=people только свою запись.
Запись, которую учётной записи просматривать нельзя, для неё не существует.
Поиск эту запись не возвращает, поиск с этой записью в качестве основы отвечает «No such object», а в значениях member группы эта запись пропускается.
Потребитель без ролей не видит ни сотрудников, ни групп, ни потребителей.
Операции и ограничения
| Тема | Поведение |
|---|---|
Операции |
Поиск с областями base, one-level и subtree, compare и «Who am I?».
Add, modify, modify DN, delete и Password Modify получают ответ |
Фильтры |
Фильтр применяется ко всем записям, которые учётной записи разрешено просматривать. |
Предел размера |
Не более 1000 записей на один поиск, какой бы предел размера ни запросил клиент.
Поиск, который достиг предела, получает ответ |
Предел времени |
Поиск, который идёт слишком долго, получает ответ |
Прочитано записей |
Поиск, которому пришлось бы прочитать слишком много записей, получает ответ |
Controls |
Control, помеченный как критичный, в том числе control постраничного вывода результатов, отклоняется с |
Неактивные подключения |
Сервер закрывает подключение с выполненным bind, которое остаётся неактивным. |
Занятый сервер |
Когда сервер занят, он отвечает |
Когда доступ заканчивается
Изменение ролей применяется при следующей операции подключения, в котором bind уже выполнен.
Подключение заканчивается, когда его учётные данные перестают действовать:
-
Подключение потребителя заканчивается, когда потребителя удаляют или перевыпускают его секрет.
-
Подключение сотрудника, выполнившего bind с паролем учётной записи, заканчивается, когда пароль меняется или истекает, когда к сотруднику применяется двухэтапная проверка или когда учётная запись деактивируется.
-
Подключение сотрудника, выполнившего bind с паролем приложения, заканчивается, когда пароль приложения отзывают или учётную запись деактивируют. Смена пароля учётной записи его не завершает.
-
Каждое подключение заканчивается, когда организацию деактивируют или заканчивается лицензия на функцию.
На операцию, которая обнаруживает недействительные учётные данные, приходит ответ insufficientAccessRights (50) с сообщением «Authentication required», и подключение разрывается.
LDAP-потребители
LDAP-потребитель — это учётная запись для системы, которая читает справочник, например для почтового сервера. У него есть название, секрет и роли, и он видит то, что разрешают его роли. Дайте ему роль, которая может просматривать сотрудников и группы сотрудников.
Потребители управляются в разделе Сотрудники > LDAP-потребители. Вкладка показывается сотрудникам, чья роль включает право LDAP-потребители и чья организация использует эту функцию. Право действует только в области «все» и включает действия «Создание», «Просмотр», «Редактирование» и «Удаление». См. Роли и права.
В заголовке страницы показаны Base DN и состояние интерфейса:
| Состояние | Значение |
|---|---|
Принимает подключения |
Сервер принимает подключения. |
Не принимает подключения |
Лицензия включает функцию, но сервер не принимает подключения. Обратитесь в CityScreen. |
Недоступно по лицензии |
В вашей организации этой функции нет. |
В таблице каждый потребитель показан в таких столбцах:
| Столбец | Содержимое |
|---|---|
Название |
Название потребителя, под ним — начало его секрета. |
Bind DN |
DN, с которым потребитель выполняет bind, с кнопкой Копировать bind DN. |
Роли |
Роли, с правами которых действует потребитель. |
Последний bind |
Дата и время последнего успешного bind или Никогда. |
Создание потребителя
-
Откройте Сотрудники > LDAP-потребители и нажмите Создать потребителя.
-
Введите Название до 255 символов, например «Почтовый сервер Postfix».
-
Выберите Роли.
-
Нажмите Создать.
-
В диалоге «LDAP-потребитель создан» показаны Bind DN и Секрет. Скопируйте секрет кнопкой Копировать секрет и нажмите Готово.
Создавайте потребителя только для системы, которую эксплуатирует ваша организация. Прежде чем передать секрет кому-либо и прежде чем перевыпустить его, убедитесь, кто его просит, потому что потребитель читает сотрудников и группы, которые разрешают его роли.
Предупреждение в диалоге гласит: «Скопируйте секрет сейчас. Он больше не будет показан. Относитесь к нему как к паролю.» После закрытия диалога секрет показать снова нельзя.
Изменение и удаление потребителя
-
Редактировать меняет название и роли. Секрет остаётся прежним.
-
Перевыпустить секрет выдаёт новый секрет и показывает его один раз. Старый секрет перестаёт работать сразу, и каждый сервер, который его использует, нужно настроить с новым.
-
Удалить удаляет потребителя. Серверы, которые выполняют bind с ним, сразу теряют доступ, и это нельзя отменить.
Роль нельзя удалить, пока она назначена потребителю.
Пример: почтовый сервер
В этом примере используются значения: office.example.com — домен организации, 7 — идентификатор потребителя и jdoe — имя пользователя.
Чтобы проверить, что потребитель может читать справочник, найдите сотрудника по имени пользователя:
ldapsearch -x -H ldaps://ldap.office.example.com:636 \
-D "cn=7,ou=consumers,dc=office,dc=example,dc=com" -w "$CONSUMER_SECRET" \
-b "ou=people,dc=office,dc=example,dc=com" "(uid=jdoe)" uid cn mail
Почтовому серверу, например Postfix, нужны три запроса; потребитель выполняет все три поиска, а проверка пароля затем выполняет bind от имени сотрудника:
-
Поиск почтового ящика. Сервер ищет сотрудника, на чей адрес доставляет почту. Фильтр —
(&(objectClass=person)(mail=<address>))нижеou=people, результирующий атрибут —mail. -
Списки рассылки. Сервер ищет группу по её адресу фильтром
(&(objectClass=groupOfNames)(mail=<address>))нижеou=groups. Затем он раскрывает значенияmember: каждое из них — DN сотрудника, чейmailчитается поиском с областью base. Потребитель должен иметь возможность просматривать участников, потому что участник, которого он просматривать не может, пропускается в списке. -
Проверка пароля. Когда сервер проверяет пароль почтового ящика, он находит сотрудника по
(uid=<username>)нижеou=peopleи выполняет bind с DN найденной записи и паролем, который ввёл пользователь.
Для Postfix первые два запроса — таблицы такого вида:
# mailboxes
server_host = ldaps://ldap.office.example.com:636
version = 3
bind = yes
bind_dn = cn=7,ou=consumers,dc=office,dc=example,dc=com
bind_pw = csd_ldc_...
search_base = ou=people,dc=office,dc=example,dc=com
query_filter = (&(objectClass=person)(mail=%s))
result_attribute = mail
# distribution lists
server_host = ldaps://ldap.office.example.com:636
version = 3
bind = yes
bind_dn = cn=7,ou=consumers,dc=office,dc=example,dc=com
bind_pw = csd_ldc_...
search_base = ou=groups,dc=office,dc=example,dc=com
query_filter = (&(objectClass=groupOfNames)(mail=%s))
special_result_attribute = member
result_attribute = mail
Для saslauthd проверка пароля использует такие настройки:
ldap_servers: ldaps://ldap.office.example.com:636
ldap_bind_dn: cn=7,ou=consumers,dc=office,dc=example,dc=com
ldap_bind_pw: csd_ldc_...
ldap_search_base: ou=people,dc=office,dc=example,dc=com
ldap_filter: (uid=%u)
ldap_auth_method: bind
Подключайтесь по адресу ldaps:// и оставляйте StartTLS выключенным: не используйте -Z с ldapsearch и start_tls = yes в почтовом сервере.
Не запрашивайте постраничный вывод результатов, потому что сервер отклоняет критичный control постраничного вывода.
|
Связанные страницы
-
Интеграции — все способы подключения других систем к CityScreen Deals
-
Группы сотрудников — машинное имя и адрес электронной почты группы в том виде, как их публикует справочник
-
Роли и права — роли, которые определяют, что видит потребитель
-
Токены доступа и пароли приложений — пароли приложений для почтовых клиентов и других программ
-
Двухэтапная проверка — почему сотрудники с двухэтапной проверкой выполняют bind с паролем приложения
-
Журнал входов — bind и неудачные bind