Настройка LDAP

В разделе описываются настройки SAML для SuiteCRM версий 8+.

1. Введение

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

Имейте в виду, что подключение SuiteCRM к провайдеру LDAP будет зависеть от: * используемого провайдера LDAP * настроек провайдера LDAP

В этой документации описываются параметры LDAP, доступные в SuiteCRM. Это НЕ руководство по настройке LDAP.

2. Примечание к устаревшей конфигурации

Прежде чем приступить к настройке 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

После внесения изменений в файл .env.local в корневой папке приложения обязательно выполните команду ./bin/console cache:clear, либо в графическом интерфейсе выполните Быстрое восстановление из меню администратора (Администрирование > Восстановление).

4. Настройка подключения

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

Параметры LDAP, указанные в файле .env по умолчанию

###> LDAP CONFIG ###
LDAP_CONNECTION_STRING=~ # available from 8.7.0
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=''

# All the following options are available from 8.7.0
# ldap debug logs go to php error log
LDAP_CONNECTION_OPTION_DEBUG_LEVEL=~
LDAP_CONNECTION_OPTION_API_INFO=~
LDAP_CONNECTION_OPTION_DEREF=~
LDAP_CONNECTION_OPTION_SIZELIMIT=~
LDAP_CONNECTION_OPTION_TIMELIMIT=~
LDAP_CONNECTION_OPTION_RESTART=~
LDAP_CONNECTION_OPTION_SERVER_CONTROLS=~
LDAP_CONNECTION_OPTION_CLIENT_CONTROLS=~
LDAP_CONNECTION_OPTION_API_FEATURE_INFO=~
LDAP_CONNECTION_OPTION_HOST_NAME=~
LDAP_CONNECTION_OPTION_ERROR_NUMBER=~
LDAP_CONNECTION_OPTION_ERROR_STRING=~
LDAP_CONNECTION_OPTION_MATCHED_DN=~

LDAP_CONNECTION_OPTION_TIMEOUT=~
LDAP_CONNECTION_OPTION_NETWORK_TIMEOUT=~
LDAP_CONNECTION_OPTION_X_TLS_CACERTDIR=~
LDAP_CONNECTION_OPTION_X_TLS_CACERTFILE=~
LDAP_CONNECTION_OPTION_X_TLS_CERTFILE=~
LDAP_CONNECTION_OPTION_X_TLS_CRL_ALL=~
LDAP_CONNECTION_OPTION_X_TLS_CRL_NONE=~
LDAP_CONNECTION_OPTION_X_TLS_CRL_PEER=~
LDAP_CONNECTION_OPTION_X_TLS_KEYFILE=~
LDAP_CONNECTION_OPTION_X_TLS_REQUIRE_CERT=~
LDAP_CONNECTION_OPTION_X_TLS_PROTOCOL_MIN=~
LDAP_CONNECTION_OPTION_X_TLS_CIPHER_SUITE=~
LDAP_CONNECTION_OPTION_X_TLS_RANDOM_FILE=~
LDAP_CONNECTION_OPTION_X_TLS_CRLFILE=~
LDAP_CONNECTION_OPTION_X_TLS_PACKAGE=~
LDAP_CONNECTION_OPTION_X_TLS_CRLCHECK=~
LDAP_CONNECTION_OPTION_X_TLS_DHFILE=~
LDAP_CONNECTION_OPTION_X_SASL_MECH=~
LDAP_CONNECTION_OPTION_X_SASL_REALM=~
LDAP_CONNECTION_OPTION_X_SASL_AUTHCID=~
LDAP_CONNECTION_OPTION_X_SASL_AUTHZID=~
LDAP_CONNECTION_OPTION_X_KEEPALIVE_IDLE=~
LDAP_CONNECTION_OPTION_X_KEEPALIVE_PROBES=~
LDAP_CONNECTION_OPTION_X_KEEPALIVE_INTERVAL=~
###< LDAP CONFIG ###

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

LDAP_HOST

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

LDAP_PORT

Порт сервера LDAP (например - 389).

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.

4.2. Параметры подключения

Все перечисленные ниже параметры доступны в SuiteCRM 8.7.0

Эти параметры соответствуют параметрам, используемым в ldap_set_option PHP.

  • LDAP_CONNECTION_OPTION_DEBUG_LEVEL

    • Укажите LDAP_CONNECTION_OPTION_DEBUG_LEVEL=7 для максимального уровня ведения журнала

    • Отладочная информация регистрируется в журнале ошибок PHP.

  • LDAP_CONNECTION_OPTION_API_INFO

  • LDAP_CONNECTION_OPTION_DEREF

  • LDAP_CONNECTION_OPTION_SIZELIMIT

  • LDAP_CONNECTION_OPTION_TIMELIMIT

  • LDAP_CONNECTION_OPTION_RESTART

  • LDAP_CONNECTION_OPTION_SERVER_CONTROLS

  • LDAP_CONNECTION_OPTION_CLIENT_CONTROLS

  • LDAP_CONNECTION_OPTION_API_FEATURE_INFO

  • LDAP_CONNECTION_OPTION_HOST_NAME

  • LDAP_CONNECTION_OPTION_ERROR_NUMBER

  • LDAP_CONNECTION_OPTION_ERROR_STRING

  • LDAP_CONNECTION_OPTION_MATCHED_DN

  • LDAP_CONNECTION_OPTION_TIMEOUT

  • LDAP_CONNECTION_OPTION_NETWORK_TIMEOUT

  • LDAP_CONNECTION_OPTION_X_TLS_CACERTDIR

  • LDAP_CONNECTION_OPTION_X_TLS_CACERTFILE

  • LDAP_CONNECTION_OPTION_X_TLS_CERTFILE

  • LDAP_CONNECTION_OPTION_X_TLS_CRL_ALL

  • LDAP_CONNECTION_OPTION_X_TLS_CRL_NONE

  • LDAP_CONNECTION_OPTION_X_TLS_CRL_PEER

  • LDAP_CONNECTION_OPTION_X_TLS_KEYFILE

  • LDAP_CONNECTION_OPTION_X_TLS_REQUIRE_CERT

  • LDAP_CONNECTION_OPTION_X_TLS_PROTOCOL_MIN

  • LDAP_CONNECTION_OPTION_X_TLS_CIPHER_SUITE

  • LDAP_CONNECTION_OPTION_X_TLS_RANDOM_FILE

  • LDAP_CONNECTION_OPTION_X_TLS_CRLFILE

  • LDAP_CONNECTION_OPTION_X_TLS_PACKAGE

  • LDAP_CONNECTION_OPTION_X_TLS_CRLCHECK

  • LDAP_CONNECTION_OPTION_X_TLS_DHFILE

  • LDAP_CONNECTION_OPTION_X_SASL_MECH

  • LDAP_CONNECTION_OPTION_X_SASL_REALM

  • LDAP_CONNECTION_OPTION_X_SASL_AUTHCID

  • LDAP_CONNECTION_OPTION_X_SASL_AUTHZID

  • LDAP_CONNECTION_OPTION_X_KEEPALIVE_IDLE

  • LDAP_CONNECTION_OPTION_X_KEEPALIVE_PROBES

  • LDAP_CONNECTION_OPTION_X_KEEPALIVE_INTERVAL

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

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

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

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

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

5.1. Включение автоматического создания пользователя

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

LDAP_AUTO_CREATE=enabled

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

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

Параметры 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 ###

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

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.

5.2. Сопоставление полей пользователя

Автоматическое создание пользователя позволяет определять учётные данные, которые будут прописаны в БД SuiteCRM на основе атрибутов из LDAP.

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

ldap.extra_fields

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

ldap.autocreate.extra_fields_map

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

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

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

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

Для переопределения настроек необходимо скопировать указанный выше файл в папку extensions, прописав аналогичный путь до файла: 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

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

Возможность входа в SuiteCRM с использованием собственного логина будет зависеть от значения параметра external_auth_only, прописанного в профиле пользователя:

Если в настройках пользователя параметр external_auth_only установлен в значение 1 (или true), пользователь не сможет войти в систему, используя учётные данные SuiteCRM.

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

Параметр должен отображаться на закладке «Дополнительно» в профиле пользователя при условии, что настроена SAML-аутентификация, см. также соответствующее поле таблицы «users» в базе данных.

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

Рассмотрите возможность использования секретов Symfony для хранения конфиденциальной информации, такой как сертификаты, открытые/закрытые ключи и т. д.

Дополнительная информация описана в разделе Использование секретов Symfony.

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

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

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

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