我正在尝试连接到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
)
如果我使用first_bind_s的第一个url(url1),则后面是错误:
INVALID_CREDENTIALS:{' info':u' 80090308:LdapErr:DSID-0C0903D9,评论:AcceptSecurityContext错误,数据52e,v2580',' desc':u& #39;凭据无效'}
但是当我使用simple_bind时,即使密码或用户名错误,它也会给我int。
simple_bind_s和simple_bind有什么区别。如何使用simple_bind进行身份验证?
答案 0 :(得分:0)
simple_bind()
和simple_bind_s()
之间的区别在于simple_bind()
是异步而simple_bind_s()
是同步。< / p>
同步版本使程序等到完成后再返回结果,异步版本立即返回id代码并继续在后台运行,然后用id代码调用result()
得到结果。
所以你对simple_bind()
的号召可能会失败;你只是不知道它,因为你还没有得到结果。
大多数ldap函数都有异步和同步版本,例如add()
和add_s()
,delete()
和delete_s()
,search()
和search_s()
,某些ldap操作(尤其是搜索)可能需要很长时间才能完成,因此如果您不希望程序长时间暂停,则可以使用异步版本。