Ошибка LDAPInvalidDNSyntaxResult при привязке соединения LDAP в приложении Flask - PullRequest
1 голос
/ 10 апреля 2020

У меня есть приложение Flask, которое я пытаюсь подключить к своему серверу LDAP ( OpenLDAP ), используя пакет flask -ldap3-login , но Кажется, я не могу правильно привязать соединение.

Мои переменные окружения установлены на:

LDAP_HOST = 'openldap'
LDAP_BASE_DN = 'dc=example,dc=org'
LDAP_BIND_USER_DN = 'cn=admin,dc=example,dc=org'
LDAP_BIND_USER_PASSWORD = 'admin'
LDAP_USER_DN = 'ou=users'
LDAP_USER_RDN_ATTR = 'cn'
LDAP_USER_LOGIN_ATTR = 'cn'

Когда я go аутентифицируюсь с result = ldap_manager.authenticate(username, password), я получаю ответ говорит:

LDAPInvalidDNSyntaxResult - 34 - invalidDNSyntax - None - invalid DN - bindResponse - None

и, следовательно, результат:

{'user_info': (None,), 'user_id': (None,), 'user_dn': (None,), 'user_groups': [], 'status': <AuthenticationResponseStatus.fail: 1>}

Вот моя структура LDAP:

phpLDAPadmin structure

А вот пример DN пользователя: enter image description here

Если я пытаюсь подключиться с помощью команды ldapsearch, я получаю правильный ответ:

# ldapsearch -x -b "ou=users,dc=example,dc=org" -H "ldap://openldap" -D "cn=admin,dc=example,dc=org" -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <ou=users,dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# users, example.org
dn: ou=users,dc=example,dc=org
ou: users
objectClass: organizationalUnit
objectClass: top

# gramsay, users, example.org
dn: cn=gramsay,ou=users,dc=example,dc=org
givenName: Gordon
sn: Ramsay
cn: gramsay
uid: gramsay
userPassword:: <password>
uidNumber: 1000
gidNumber: 500
homeDirectory: /home/users/gramsay
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top

# iausers, users, example.org
dn: cn=iausers,ou=users,dc=example,dc=org
cn: iausers
gidNumber: 500
objectClass: posixGroup
objectClass: top

# search result
search: 2
result: 0 Success

# numResponses: 4
# numEntries: 3

Что-то не так с тем, как я подключаюсь, или, возможно, со структурой на моем сервере LDAP?

1 Ответ

0 голосов
/ 10 апреля 2020

В итоге проблема заключалась в том, что flask-ldap3-login пытался выполнить прямую привязку с предоставленным именем пользователя / паролем вместо учетных данных администратора, что было недопустимо. Вместо этого мне нужно было установить LDAP_ALWAYS_SEARCH_BIND = True, чтобы гарантировать, что привязка поиска была выполнена вместо прямой привязки.

...