Настройка LDAP

1. Введение

Аутентификация LDAP использует Symfony Security component authenticators for LDAP. SuiteCRM расширяет некоторые сервисы Symfony. Таким образом, большая часть настроек будет аналогична настройкам Symfony.

На данный момент устаревшие настройки LDAP игнорируются. Поддержка устаревших настроек планируется в будущем.

2. Особенности настройки LDAP в SuiteCRM 8.x

Прежде чем приступить к настройке LDAP, обратите внимание на следующее:

  • Настройки, описанные в этом разделе:

    • Не учитываются при входе в систему с использованием API v4 или v8.

    • Не используются в устаревшей конфигурации.

    • Настройки LDAP, указанные через графический интерфейс (Администрирование  Управление паролями), не учитываются.

  • Настройки LDAP, указанные через графический интерфейс, используются только устаревшим API v4.

Для использования LDAP в SuiteCRM 8.x необходимо прописать соответствующие настройки в файле .env.local (как описано ниже) и, если вы хотите использовать API v4 с LDAP, настройте LDAP, используя графический интерфейс (Администрирование  Управление паролями).

3. Включение аутентификации LDAP

Для включения аутентификации LDAP в файле .env.local пропишите следующее:

AUTH_TYPE=ldap

4. Настройка аутентификации

SuiteCRM предоставляет доступ к некоторым параметрам Symfony LDAP, указывая стандартные значения этих параметров в файле .env. Файл .env содержит значения по умолчанию для всех доступных переменных системы. Если вы хотите переопределить те или иные значения - укажите новые значения параметров в файле .env.local.

###> LDAP CONFIG ###
LDAP_HOST=''
LDAP_PORT=389
LDAP_ENCRYPTION=tls
LDAP_PROTOCOL_VERSION=3
LDAP_REFERRALS=false
LDAP_DN_STRING=''
LDAP_QUERY_STRING=''
LDAP_SEARCH_DN=''
LDAP_SEARCH_PASSWORD=''
###< LDAP CONFIG ###

4.1. Описание параметров

LDAP_HOST

Название сервера LDAP.

LDAP_PORT

Порт сервера LDAP.

LDAP_ENCRYPTION

Тип шифрования, используемый для подключения к LDAP: none, tls или ssl.

LDAP_DN_STRING

Параметр DN (Distinguished Name) используется для идентификации пользователя в LDAP. Имя пользователя может быть указано как переменная, например: 'cn={username},dc=example,dc=org'.

LDAP_QUERY_STRING

Строка для поиска пользователя. Найденное DN будет использоваться для проверки учётных данных.

LDAP_SEARCH_DN

DN пользователя, которое будет использоваться для поиска DN.

LDAP_SEARCH_PASSWORD

Пароль пользователя, используемого в LDAP_SEARCH_DN.

Пример:

###> LDAP CONFIG ###
LDAP_HOST=ldap
LDAP_ENCRYPTION=none
LDAP_DN_STRING='cn={username},dc=example,dc=org'
###< LDAP CONFIG ###

5. Использование собственной аутентификации

Даже при использовании LDAP система позволяет использовать собственную аутентификацию с использованием пароля, установленного в SuiteCRM для указанного пользователя.

Если в настройках пользователя параметр external_auth_only (см. соответствующее поле таблицы users в базе данных) установлен в значение 1 (или true), вход в систему завершится ошибкой, если указанный пароль не совпадает с паролем в LDAP, или если возникнут какие-либо другие проблемы с аутентификацией по LDAP.

С другой стороны, если у пользователя параметр external_auth_only установлен в значение 0 (или false) и аутентификация по LDAP не удалась, система попытается пройти аутентификацию, используя учётные данные SuiteCRM.

6. Настройка автоматического создания пользователя

По умолчанию автоматическое создание пользователей для LDAP отключено.

Если этот параметр отключён, то вы сможете аутентифицировать пользователя с помощью LDAP только в том случае, если он перед этим был создан в SuiteCRM.

Включённый параметр LDAP_AUTO_CREATE автоматически создаст пользователя из LDAP, если он ещё не существует в SuiteCRM.

Обратите внимание, что у созданного таким образом пользователя не будет установлен пароль в SuiteCRM, а параметр external_auth_only будет установлен в значение 1 (или true).

Для включения автоматического создания пользователя LDAP в файле .env.local пропишите следующее:

LDAP_AUTO_CREATE=enabled

При включении автоматического создания пользователя вам также необходимо прописать параметры, необходимые для поиска пользователя в LDAP.

Как и для других уже рассмотренных параметров, для автоматического создания пользователя файл .env содержит значения по умолчанию, которые вы можете переопределить:

###> LDAP AUTO CREATE CONFIG ###
LDAP_AUTO_CREATE=disabled
LDAP_PROVIDER_BASE_DN=''
LDAP_PROVIDER_SEARCH_DN=''
LDAP_PROVIDER_SEARCH_PASSWORD=''
LDAP_PROVIDER_DEFAULT_ROLES=ROLE_USER
LDAP_PROVIDER_UID_KEY=''
LDAP_PROVIDER_FILTER=''
###< LDAP AUTO CREATE CONFIG ###

6.1. Описание параметров

LDAP_PROVIDER_BASE_DN

Базовое (корневая) DN, используемое для поиска пользователей.

LDAP_PROVIDER_UID_KEY

Атрибут вашей записи в LDAP для использования в качестве uid. Используется для создания запроса типа ({uid_key}={username}).

LDAP_PROVIDER_FILTER

Необязательный параметр. Позволяет указать запрос для поиска пользователя в LDAP. Фильтр по умолчанию: ({uid_key}={username}).

LDAP_PROVIDER_SEARCH_DN

DN другого пользователя, который будет использоваться для поиска пользователя, с которым мы в данный момент пытаемся пройти аутентификацию.

LDAP_PROVIDER_SEARCH_PASSWORD

Пароль для пользователя, используемого в параметре LDAP_PROVIDER_SEARCH_DN.

7. Дополнительные поля LDAP

Настройки дополнительных полей используются для получения дополнительных атрибутов/полей из LDAP. Полученные значения могут быть использованы для заполнения параметров создаваемой записи нового пользователя.

Настройки дополнительных полей НЕ прописываются в файле .env. Это делается через переопределение параметров контейнера.

Настройки для дополнительных полей по умолчанию прописываются в файле config/services/ldap/ldap.yaml.

Для переопределения настроек необходимо скопировать указанный выше файл в папку extensions, прописав аналогичный путь до файла, например: extensions/<your-package>/config/services/ldap/ldap.yaml.

parameters:
  ldap.autocreate.extra_fields_map:

  ldap.extra_fields: [ ]

где:

ldap.extra_fields

Массив строк с ключом атрибутов/полей записи LDAP для извлечения (см. пример ниже).

ldap.autocreate.extra_fields_map

Способ сопоставления полей LDAP с полями пользователя (см. пример ниже).

Пример:

Настройки в файле .env.local

###> LDAP AUTO CREATE CONFIG ###
LDAP_PROVIDER_BASE_DN='dc=example,dc=org'
LDAP_PROVIDER_UID_KEY='cn'
LDAP_PROVIDER_SEARCH_DN='cn=admin,dc=example,dc=org'
LDAP_PROVIDER_SEARCH_PASSWORD='admin'
###< LDAP AUTO CREATE CONFIG ###

Настройки в файле extensions/<your-package>/config/services/ldap/ldap.yaml

parameters:
  ldap.extra_fields: [ 'name', 'sn', 'email' ]
  ldap.autocreate.extra_fields_map:
    name: first_name
    sn: last_name
    email: email1

8. Использование секретов в Symfony

Одна из замечательных особенностей использования пакетов и настроек Symfony заключается в том, что мы можем использовать весь потенциал возможностей, предлагаемых фреймфорком Symfony. Одна из таких возможностей - секреты (см. описание в официальной документации)

Секреты Symfony позволяют нам безопасно хранить все конфиденциальные значения, зашифрованные в хранилище (vault). Кроме того, эти значения также могут быть определены для отдельного окружения.

В нашем случае это может быть использовано для хранения сертификатов и закрытых ключей, к которым мы бы не хотели иметь легкий доступ.

Для добавления секретов сначала выполните действия, описанные в документе Symfony’s documentation: How to Keep Sensitive Information Secret.

Пример:

После выполнения действий, необходимых для добавления секретов, вы можете изменить конфигурацию LDAP таким образом, чтобы некоторые настройки сохранялись в секретах. Следующие шаги могут быть использованы в качестве примера:

  1. Добавьте секрет для закрытого ключа LDAP

    Из корневой папки системы выполните команду php bin/console secrets:set LDAP_SEARCH_PASSWORD и после приглашения укажите необходимое значение.

  2. Очистите кеш Symfony

9. Очистка кеша Symfony

После внесения любых изменений в файлы .env и ldap.yaml необходимо очистить кеш Symfony.

Из корневой папки системы выполните:

bin/console cache:clear

Либо удалите содержимое папки /<path-to-your-suite8-project>/cache.

Apache / php должны иметь доступ на чтение и запись в папку /<path-to-your-suite8-project>/cache.
Это не относится к папке /<path-to-your-suite8-project>/public/legacy/cache - не удаляйте её содержимое.

10. Дополнительная информация

Дополнительная информация о настройке LDAP находится на странице Symfony’s Security Component documentation.

Обязательно убедитесь, что информация, указанная по ссылке, актуальна для версии Symfony, используемой в установленной версии SuiteCRM.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.