python 中使用 ldap 库的 LDAP 身份验证问题

LDAP authentication issue in python using ldap library

我正在尝试连接到 LDAP 服务器进行身份验证。我们的 LDAP 服务器使用 SSL,但我们不使用任何 SSL 证书。

以下是我的代码:

我有两个 url 由系统管理员提供。有如下:

url1 = "ldap://100.x.x.x:389"
url2 = "ldaps://10.x.x.x:636"

我的第一个问题是 url 我应该使用哪个? ldap:// 和 ldaps://

有什么区别

LDAP认证码如下,我试过同时使用(url1和url2):

conn = ldap.initialize(url)

ldap.TLS_AVAIL
1

conn.simple_bind_s(
        'CN={0},ou=users,DC=compnay,DC=com'.format(myemail),
        mypassword
    )

conn.simple_bind(
        'CN={0},ou=users,DC=compnay,DC=com'.format(myemail),
        mypassword
    )

如果我首先使用 url (url1) 和 simple_bind_s,则以下是错误:

INVALID_CREDENTIALS: {'info': u'80090308: LdapErr: DSID-0C0903D9, comment: AcceptSecurityContext error, data 52e, v2580', 'desc': u'Invalid credentials'}

但是当我使用 simple_bind 时,即使密码或用户名错误,它也会给我 int。

simple_bind_s 和 simple_bind 有什么区别。如何使用 simple_bind 进行身份验证?

simple_bind()simple_bind_s()的区别在于simple_bind()异步simple_bind_s()同步.

同步版本让你的程序等到它完成然后 returns 结果,异步版本 returns 一个 id 代码立即并继续在后台工作,然后你稍后使用 ID 代码调用 result() 以获取结果。

所以您对 simple_bind() 的调用可能确实失败了;你只是不知道,因为你还没有获取结果。

大部分ldap函数都有异步和同步版本,例如add()add_s()delete()delete_s()search()search_s()] 等。某些 ldap 操作(尤其是搜索)可能需要很长时间才能完成,因此如果您不希望程序有长时间停顿,则可以使用异步版本。