В моем приложении node у меня есть вариант использования, в котором мне нужно аутентифицировать пользователей LDAP, принадлежащих только к определенной группе. Если пользователь не принадлежит к указанной группе, аутентификация должна завершиться ошибкой.
Я использую библиотеку ldapauth-fork для аутентификации LDAP.
Я пробовал различные подходы к фильтрам, но ни один из них не работает должным образом. Ниже приведены попытки, которые я пробовал:
let ldapConnector = new LdapAuth (
{
url : config.ldap.url,
bindDN : config.ldap.bindDN,
adminPassword : config.ldap.adminPassword,
searchBase : config.ldap.searchBase,
searchFilter : "(&(sAMAccountName=testUser)(memberOf=testGroup))",
cache : true,
includeRaw : true,
log : logger
}
);
Для этой конфигурации я всегда получаю no such user: "testuser"
, даже если пользователь является членом группы testGroup
.
let ldapConnector = new LdapAuth (
{
url : config.ldap.url,
bindDN : config.ldap.bindDN,
adminPassword : config.ldap.adminPassword,
searchBase : config.ldap.searchBase,
searchFilter : "(sAMAccountName=testuser)",
groupSearchFilter : "(member=testGroup)"`
cache : true,
includeRaw : true,
log : logger
}
);
Для этой конфигурации аутентификация всегда проходит успешно, даже если имя группы представляет собой случайную строку.
Итак, какой должна быть правильная строка фильтра, чтобы аутентификация работала?