【发布时间】:2020-04-10 15:50:37
【问题描述】:
我有一个 Flask 应用程序,我正在尝试使用 flask-ldap3-login 包连接到我的 LDAP 服务器 (OpenLDAP),但我似乎无法正确绑定连接。
我的环境变量设置为:
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'
当我使用 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 结构:
如果我尝试通过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 服务器上的结构有问题?
【问题讨论】:
标签: python flask ldap openldap flask-login