【问题标题】:LDAP authentication issue in python using ldap library使用 ldap 库的 python 中的 LDAP 身份验证问题
【发布时间】:2016-11-16 17:57:58
【问题描述】:

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

以下是我的代码:

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

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

我的第一个问题是我应该使用哪个网址? 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 进行身份验证?

【问题讨论】:

    标签: python authentication ssl active-directory openldap


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多