Настройка LDAP
В этой статье описываются параметры подключения Webim к Active Directory по протоколу LDAP:
-
назначение и область применения LDAP-подключения;
-
состав блока
ldapв редакторе настроек аккаунта (account config); -
настройка подключения к контроллеру домена;
-
настройка области поиска пользователей и групп безопасности;
-
настройка сопоставления групп безопасности;
-
примеры конфигурации;
-
базовая проверка работы LDAP.
Термины
-
LDAP — протокол доступа к каталогу. В этой статье подразумевается подключение к Active Directory для поиска пользователей и получения их атрибутов.
-
LDAPS — подключение к LDAP с использованием TLS (защищённое соединение).
-
DN (Distinguished Name) — отличительное имя объекта в каталоге LDAP/Active Directory, которое однозначно определяет его положение в дереве. DN состоит из компонентов
CN,OU,DC. Пример DN группы:CN=operators,OU=roles,DC=webim,DC=local. -
OU — подразделение (организационная единица) в Active Directory. Используется для построения структуры каталога (например, отделы, сервисные учётные записи, группы).
-
search_base — DN, от которого начинается поиск пользователя в каталоге (область поиска).
-
sAMAccountName — доменный логин пользователя Active Directory. Используется при поиске пользователя в каталоге.
-
memberOf — атрибут пользователя Active Directory со списком групп, в которые входит пользователь (в виде DN). Используется для сопоставления с группами безопасности Webim.
Назначение протокола
LDAP-подключение в контексте интеграции с Active Directory используется для:
-
поиска учетной записи пользователя по его логину в домене (
sAMAccountName); -
получения атрибутов пользователя (отображаемое имя, адрес электронной почты);
-
получения списка групп безопасности пользователя из атрибута
memberOf(для сопоставления с группами безопасности Webim).
Webim обращается к Active Directory по LDAP:
-
во время входа оператора через Active Directory (SSO);
-
при фоновой синхронизации данных операторов;
-
при ручной синхронизации из интерфейса администратора.
Конкретные механизмы авторизации и синхронизации описаны в статье «SSO и режимы авторизации».
Пререквизиты
Со стороны Active Directory
-
Развёрнут контроллер домена Active Directory.
-
Настроен DNS домена (разрешение имён контроллеров домена).
-
Определены:
-
контроллер(ы) домена, к которым будет подключаться Webim;
-
сервисная учетная запись (например,
svc_webim), под которой будут выполняться LDAP-запросы; -
подразделения (OU), в которых размещены пользователи и группы, связанные с Webim.
-
-
Сервисной учетной записи предоставлены права на чтение атрибутов пользователей и групп в пределах области поиска.
Со стороны сервера Webim
-
Сервер Webim имеет сетевой доступ к контроллеру домена по TCP:
-
389 (LDAP) — если используется незащищённое подключение;
-
636 (LDAPS) — если используется защищённое подключение.
-
-
На сервере Webim установлен LDAP-клиент для диагностики (достаточно наличия утилит
ldapsearch/ldapwhoami):-
Debian/Ubuntu:
ldap-utils -
RHEL-подобные:
openldap-clients
-
-
Настроена Kerberos-конфигурация (для SSO), если используется единый вход. См. «настройка Kerberos».
Блок LDAP в редакторе настроек аккаунта
Параметры подключения к LDAP задаются в редакторе настроек аккаунта (account config) в виде отдельного блока ldap в формате JSON. Параметр должен быть задан полностью (все поля ниже).
| Поле | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
url |
string |
— | Адрес LDAP-сервера (хост/порт). Используется для подключения (вместе с use_ssl). |
user |
string |
— | Учётная запись для привязки (LDAP DN / UPN — в зависимости от настроек Active Directory/LDAP). |
password |
string |
— | Пароль учётной записи для привязки. |
search_base |
string |
— | База поиска (DN корня домена), например dc=example,dc=com. Используется максимум один домен. |
security_group_pattern |
string |
— | Шаблон DN группы безопасности в Active Directory. В строке используется плейсхолдер {} — вместо него подставляется имя группы безопасности Webim (Security group name). Пример: CN={},OU=roles,DC=example,DC=com. |
security_group_attribute |
string |
— | Атрибут пользователя, из которого берётся список групп безопасности. |
use_ssl |
boolean |
— | Использовать ли SSL при подключении к LDAP. |
Пример:
{
"ldap": {
"url": "ldap://dc1.example.local:389",
"user": "CN=svc_webim,OU=ServiceAccounts,DC=example,DC=local",
"password": "********",
"search_base": "OU=WebimUsers,DC=example,DC=local",
"security_group_pattern": "CN={},OU=WebimGroups,OU=WebimUsers,DC=example,DC=local",
"security_group_attribute": "memberOf",
"use_ssl": false
}
}
Настройка подключения к LDAP
Параметр url
Параметр url задает адрес контроллера домена и тип подключения:
-
пример для LDAP:
"url": "ldap://dc1.example.local:389" -
пример для LDAPS:
"url": "ldaps://dc1.example.local:636"
N.B.
При использовании LDAPS необходимо:
-
убедиться, что сертификат контроллера домена выдан доверенным центром (корневой сертификат установлен на сервере Webim);
-
убедиться, что имя в сертификате совпадает с именем, указанным в
url.
Параметры user и password
user — DN сервисной учетной записи, под которой выполняются LDAP-запросы.
Пример:
"user": "CN=svc_webim,OU=ServiceAccounts,DC=example,DC=local"
password — пароль данной учетной записи.
Параметр use_ssl
-
true— подключение выполняется в режиме LDAPS. -
false— подключение выполняется в режиме LDAP.
Настройка области поиска
Параметр search_base определяет корневой DN, в пределах которого Webim выполняет поиск пользователей Active Directory.
Примеры:
"search_base": "DC=example,DC=local"
"search_base": "OU=WebimUsers,DC=example,DC=local"
Настройка сопоставления групп безопасности
Параметр security_group_pattern
security_group_pattern задаёт шаблон DN групп безопасности Active Directory, которые Webim сопоставляет с группами безопасности Webim. В шаблоне вместо имени группы используется подстановка {}. Пример:
"security_group_pattern": "CN={},OU=WebimGroups,OU=WebimUsers,DC=example,DC=local"
Как работает сопоставление:
-
Администратор создаёт в Webim группу безопасности с именем
Operators. -
При обработке данных из Active Directory Webim формирует ожидаемый DN группы как:
CN=Operators,OU=WebimGroups,OU=WebimUsers,DC=example,DC=local -
Webim сравнивает этот DN со значениями, полученными из
memberOfдоменного пользователя.
Важно!
Значение security_group_pattern должно соответствовать формату DN, который возвращает Active Directory в memberOf.
Параметр security_group_attribute
security_group_attribute — имя атрибута объекта пользователя, содержащего список DN групп, в которые входит пользователь. Для Active Directory должен использоваться атрибут:
"security_group_attribute": "memberOf"
Проверка работы LDAP
Проверка подключения с сервера Webim
Для базовой проверки подключения к LDAP с сервера Webim используйте ldapwhoami и ldapsearch.
Проверка LDAP-подключения
-
LDAP:
ldapwhoami \ -H "ldap://dc1.example.local:389" \ -D "CN=svc_webim,OU=ServiceAccounts,DC=example,DC=local" \ -W -
LDAPS:
ldapwhoami \ -H "ldaps://dc1.example.local:636" \ -D "CN=svc_webim,OU=ServiceAccounts,DC=example,DC=local" \ -W
Проверка поиска пользователя по sAMAccountName
ldapsearch \
-H "ldap://dc1.example.local:389" \
-D "CN=svc_webim,OU=ServiceAccounts,DC=example,DC=local" \
-W \
-b "OU=WebimUsers,DC=example,DC=local" \
"(sAMAccountName=test.user)" \
sAMAccountName mail displayName memberOf
Проверьте, что:
-
запись пользователя найдена;
-
атрибут
memberOfсодержит DN групп, которые должны сопоставляться с группами безопасности Webim.
Проблемы и возможные ошибки
При возникновении ошибок смотрите статью «Интеграция с Active Directory: диагностика и типовые ошибки».