Вопрос или проблема
Я могу искать пользователя с помощью ldapsearch, это работает нормально для обоих доменов.
Если я хочу аутентифицироваться с помощью testsaslauthd -u user1 -p 12345678 0: NO “аутентификация не удалась”.
Если я аутентифицируюсь с Windows-машины: аутентификация не удалась – пожалуйста, проверьте ваше имя пользователя и пароль.
Как я могу это решить?
У меня следующая конфигурация:
/etc/ldap/ldap.conf
BASE dc=proxy,dc=local
URI ldap://ldap.proxy.local
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
/etc/default/slapd
SLAPD_USER=”openldap”
SLAPD_GROUP=”openldap”
SLAPD_PIDFILE=
SLAPD_SERVICES=”ldap:/// ldapi:///”
SLAPD_SENTINEL_FILE=/etc/ldap/noslapd
SLAPD_OPTIONS=””
/etc/ldap/slapd.conf
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/openldap.schema
allow bind_v2
pidfile /var/run/ldap/slapd.pid
argsfile /var/run/ldap/slapd.args
modulepath /usr/lib/ldap
moduleload back_ldap.la
moduleload back_meta.la
moduleload rwm.la
moduleload accesslog.la
moduleload auditlog.la
loglevel 2048
LogFile /var/log/slapd/slapd.log
#######################################################################
определения базы данных
#######################################################################
attributetype ( 1.2.840.113556.1.4.656 NAME ‘userPrincipalName’ EQUALITY caseExactMatch
SYNTAX ‘1.3.6.1.4.1.1466.115.121.1.15’ SINGLE-VALUE )
database meta
suffix “dc=proxy,dc=local”
rootdn “cn=admin,dc=proxy,dc=local”
rootpw ******
#LDAP1
uri “ldap://dc1.local/ou=AD1,dc=proxy,dc=local”
lastmod off
suffixmassage “ou=AD1,dc=proxy,dc=local” “dc=dc1,dc=local”
idassert-bind bindmethod=simple
binddn=”CN=Service1,OU=Users,DC=dc1,DC=local”
credentials=”*****”
mode=none
flags=non-prescriptive
idassert-authzFrom “dn.exact:cn=admin,dc=proxy,dc=local”
#LDAP2
uri “ldap://dc2.local/ou=AD2,dc=proxy,dc=local”
lastmod off
suffixmassage “ou=AD2,dc=proxy,dc=local” “dc=dc2,dc=local”
idassert-bind bindmethod=simple
binddn=”CN=Service2,OU=Users,DC=dc2,DC=local”
credentials=”*****”
mode=none
flags=non-prescriptive
idassert-authzFrom “dn.exact:cn=admin,dc=proxy,dc=local”
overlay rwm
rwm-map attribute uid sAMAccountName
rwm-map attribute mail proxyAddresses
nano /etc/default/saslauthd
START=yes
DESC=”демон аутентификации SASL”
NAME=”saslauthd”
MECHANISMS=”ldap”
MECH_OPTIONS=”/etc/saslauthd.conf”
THREADS=5
OPTIONS=”-r -c -m /var/run/saslauthd”
/etc/saslauthd.conf
ldap_servers: ldap://127.0.0.1:289
ldap_search_base: DC=proxy,DC=local
ldap_timeout: 10
ldap_filter: sAMAccountName=%U
ldap_bind_dn: cn=admin,dc=proxy,dc=local
ldap_password: ******
ldap_deref: never
ldap_restart: yes
ldap_scope: sub
ldap_use_sasl: no
ldap_start_tls: no
ldap_version: 3
ldap_auth_method: bind
/usr/lib/sasl2/slapd.conf
pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
Ответ или решение
Проблема, с которой вы сталкиваетесь, может быть вызвана несколькими причинами, связанными с конфигурацией как OpenLDAP, так и SASL. Ниже приведены шаги и рекомендации, которые помогут вам решить проблему аутентификации:
Шаг 1: Проверьте параметры LDAP
-
Проверка URIs и DN:
Убедитесь, что значенияuri
в конфигурации OpenLDAP корректны и указывают на правильно настроенные контроллеры домена (DC). Проверьте, чтоbinddn
иcredentials
для обоих LDAP серверов корректны и имеют соответствующие права для выполнения аутентификации. -
Фильтр LDAP в /etc/saslauthd.conf:
Параметрldap_filter
у вас установлен какsAMAccountName=%U
. Убедитесь, что предоставляемые пользовательские имена действительно соответствуют значениямsAMAccountName
в вашей Active Directory. Возможно, вам потребуется использовать другой атрибут для фильтрации.
Шаг 2: Конфигурация SASL
-
Параметры saslauthd:
Убедитесь, чтоsaslauthd
запущен и правильно настроен с использованием следующих параметров в/etc/default/saslauthd
:OPTIONS="-r -c -m /var/run/saslauthd"
Проверьте, что каталог
/var/run/saslauthd
существует и доступен. -
Файлы логов:
Проверьте логи SASL и LDAP для выявления возможных ошибок. Файл/var/log/slapd/slapd.log
должен содержать записи, которые могут указать на проблему с аутентификацией.
Шаг 3: Тестирование
-
Тестирование с помощью testsaslauthd:
Убедитесь, что команда выглядит следующим образом:testsaslauthd -u sAMAccountName -p 'ваш_пароль'
Замените
sAMAccountName
на имя пользователя с Active Directory. Если аутентификация не проходит, попробуйте изменить значение фильтра вsaslauthd.conf
, чтобы проверить, что поиск пользователей выполняется корректно. -
Аутентификация с Windows:
Попробуйте аутентифицироваться с разных клиентов (не только с Windows), чтобы проверить, что проблема не вызвана определенной конфигурацией клиента.
Шаг 4: Убедитесь в совместимости
- Версии протоколов:
Убедитесь, что используемые версии LDAP и SASL соответствуют требованиям Microsoft Active Directory. Зачастую протоколы LDAPS и SASL могут приводить к несовместимостям, особенно если используются разные версии OpenLDAP.
Шаг 5: Настройка TLS
Если вы планируете использовать безопасные соединения, убедитесь, что TLS правильно настроен. Ваша конфигурация не имеет параметров для ldap_start_tls
. Если вы используете LDAPS, необходимо явно указать это в конфигурационных файлах. Также убедитесь, что сертификаты установлены правильно.
Заключение
Проблема аутентификации может быть вызвана множеством факторов, включая неверные DN, параметры фильтрации LDAP и ошибки в конфигурации SASL. Проведение тестирования с различными параметрами и проверка логов помогут вам диагностировать и решить проблему. Если все вышеперечисленное не поможет, рассмотрите возможность включения повышенного уровня логирования для более подробного анализа.