如何正确认证LDAP?

时间:2018-06-23 05:42:19

标签: python-3.x authentication ldap python-ldap ldapauth

我正在一个必须使用LDAP身份验证的项目中。在添加到Flask应用程序之前,在Stack Overflow上找到link进行练习后,我正在ldap.forumsys.com上使用服务器。

如果我在python代码中运行ldapsearch bash命令,我会得到一堆用户名(Tesla等...)及其相关数据(尽管没有密码哈希)。我能够提取用户名/用户数据,如下所示:

username = request.form['username']
password = request.form['password']
cmd = "ldapsearch -h ldap.forumsys.com -D cn=read-only-admin,dc=example,dc=com -w" + os.environ['LDAP_PWD'] + " -b dc=example,dc=com"
ldap_query = os.popen(cmd).read()
user_str = re.sub("\n", "", ldap_query)
users = user_str.split("#")
user_data = ""
for line in users:
    if username in line:
        user_data = line
        break

但是后来我意识到我的LDAP与数据库不同。我希望找到可以用于验证用户登录信息的密码哈希。

因此,我尝试了python-ldap3模块:

>>> conn = Connection(server, 'uid=tesla,dc=example,dc=com', 'password', auto_bind=True)
>>> conn.bound
True
>>> conn.entries
[]

不幸的是,调用conn.entries之后,我似乎无法获得列表中返回的任何数据。

我可以看到ldap3模块绑定了该连接。 ldapsearch命令是否也绑定?如果没有密码哈希,我应该如何验证用户在客户端输入的用户名/密码?

非常感谢大家。

1 个答案:

答案 0 :(得分:0)

如果声明...

conn.bound == True

然后连接已通过LDAP验证