Перейти к основному содержимому
Версия: 2.0.x

Аутентификация LDAP

Помимо нативной аутентификации на основе пароля, Selena также поддерживает аутентификацию LDAP.

В этом разделе описывается, как вручную создавать и аутентифицировать пользователей с использованием LDAP в Selena. Инструкции по интеграции Selena с вашим сервисом LDAP с помощью security integration см. в разделе Аутентификация с помощью Security Integration. Подробнее об аутентификации групп пользователей в вашем сервисе LDAP см. в разделе Аутентификация групп пользователей.

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

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

# Добавьте IP-адрес сервиса LDAP.
authentication_ldap_simple_server_host =
# Добавьте порт сервиса LDAP, значение по умолчанию 389.
authentication_ldap_simple_server_port =
# Разрешить ли незашифрованные подключения к серверу LDAP. Значение по умолчанию: `true`. Установка этого значения в `false` означает, что для доступа к LDAP требуется шифрование SSL.
authentication_ldap_simple_ssl_conn_allow_insecure =
# Локальный путь для хранения SSL CA сертификата сервера LDAP. Поддерживаются форматы pem и jks. Этот параметр не нужно устанавливать, если сертификат выдан доверенной организацией.
authentication_ldap_simple_ssl_conn_trust_store_path =
# Пароль для доступа к локально хранящемуся SSL CA сертификату сервера LDAP. Сертификаты в формате pem не требуют пароля. Только сертификаты в формате jks требуют пароля.
authentication_ldap_simple_ssl_conn_trust_store_pwd =

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

# Добавьте Base DN пользователя, указывающий диапазон поиска пользователя.
authentication_ldap_simple_bind_base_dn =
# Добавьте имя атрибута, идентифицирующего пользователя в объекте LDAP. По умолчанию: uid.
authentication_ldap_simple_user_search_attr =
# Добавьте DN администратора для поиска пользователей.
authentication_ldap_simple_bind_root_dn =
# Добавьте пароль администратора для поиска пользователей.
authentication_ldap_simple_bind_root_pwd =

Механизм сопоставления DN

Начиная с версии v1.5.2, Selena поддерживает запись и передачу информации Distinguished Name (DN) пользователя во время аутентификации LDAP для более точного разрешения групп.

Принцип работы

  1. Фаза аутентификации: LDAPAuthProvider записывает обе части информации после успешной аутентификации пользователя:

    • Имя пользователя для входа (для традиционного сопоставления групп)
    • Полный DN пользователя (для сопоставления групп на основе DN)
  2. Фаза разрешения групп: LDAPGroupProvider определяет стратегию сопоставления на основе конфигурации параметра ldap_user_search_attr:

    • Когда ldap_user_search_attr настроен, используется имя пользователя в качестве ключа для сопоставления групп.
    • Когда ldap_user_search_attr не настроен, используется DN в качестве ключа для сопоставления групп.

Сценарии использования

  • Традиционная среда LDAP: Члены группы используют простые имена пользователей (например, атрибут cn). Администраторам необходимо настроить ldap_user_search_attr.
  • Среда Microsoft AD: Члены группы могут не иметь атрибутов имени пользователя. ldap_user_search_attr настроить невозможно. Система будет использовать DN напрямую для сопоставления.
  • Смешанная среда: Поддерживается гибкое переключение между обоими методами сопоставления.

Создание пользователя с LDAP

При создании пользователя укажите метод аутентификации как аутентификацию LDAP с помощью IDENTIFIED WITH authentication_ldap_simple AS 'xxx'. xxx — это DN (Distinguished Name) пользователя в LDAP.

Пример 1:

CREATE USER tom IDENTIFIED WITH authentication_ldap_simple AS 'uid=tom,ou=company,dc=example,dc=com'

Можно создать пользователя без указания DN пользователя в LDAP. При входе пользователя Selena выполнит поиск информации о пользователе в системе LDAP. Если найдено одно и только одно совпадение, аутентификация успешна.

Пример 2:

CREATE USER tom IDENTIFIED WITH authentication_ldap_simple

В этом случае необходимо добавить дополнительную конфигурацию в FE:

  • authentication_ldap_simple_bind_base_dn: Base DN пользователя, указывающий диапазон поиска пользователя.
  • authentication_ldap_simple_user_search_attr: Имя атрибута в объекте LDAP, идентифицирующего пользователя, по умолчанию uid.
  • authentication_ldap_simple_bind_root_dn: DN учетной записи администратора, используемой для поиска информации о пользователе.
  • authentication_ldap_simple_bind_root_pwd: Пароль учетной записи администратора, используемой при поиске информации о пользователе.

Аутентификация пользователей

Аутентификация LDAP требует, чтобы клиент передавал пароль в открытом виде в Selena. Существует три способа передачи пароля в открытом виде:

Подключение из MySQL-клиента с LDAP

Добавьте --default-auth mysql_clear_password --enable-cleartext-plugin при выполнении:

mysql -utom -P9030 -h127.0.0.1 -p --default-auth mysql_clear_password --enable-cleartext-plugin

Подключение из JDBC/ODBC клиента с LDAP

  • JDBC

Обратите внимание, что при использовании JDBC-соединений необходимо включить SSL на стороне сервера. Дополнительную информацию см. в разделе SSL-аутентификация.

JDBC 5:

Properties properties = new Properties();
properties.put("authenticationPlugins", "com.mysql.jdbc.authentication.MysqlClearPasswordPlugin");
properties.put("defaultAuthenticationPlugin", "com.mysql.jdbc.authentication.MysqlClearPasswordPlugin");
properties.put("disabledAuthenticationPlugins", "com.mysql.jdbc.authentication.MysqlNativePasswordPlugin");

JDBC 8:

Properties properties = new Properties();
properties.put("authenticationPlugins", "com.mysql.cj.protocol.a.authentication.MysqlClearPasswordPlugin");
properties.put("defaultAuthenticationPlugin", "com.mysql.cj.protocol.a.authentication.MysqlClearPasswordPlugin");
properties.put("disabledAuthenticationPlugins", "com.mysql.cj.protocol.a.authentication.MysqlNativePasswordPlugin");
  • ODBC

Добавьте default\_auth=mysql_clear_password и ENABLE_CLEARTEXT\_PLUGIN=1 в DSN ODBC, а также имя пользователя и пароль.