使用Python + LDAP身份验证活动目录

100

我该如何使用Python + LDAP进行AD身份验证?我目前正在使用python-ldap库,但它只能让我流泪。

我甚至无法绑定以执行一个简单的查询:

import sys
import ldap


Server = "ldap://my-ldap-server"
DN, Secret, un = sys.argv[1:4]

Base = "dc=mydomain,dc=co,dc=uk"
Scope = ldap.SCOPE_SUBTREE
Filter = "(&(objectClass=user)(sAMAccountName="+un+"))"
Attrs = ["displayName"]

l = ldap.initialize(Server)
l.protocol_version = 3
print l.simple_bind_s(DN, Secret)

r = l.search(Base, Scope, Filter, Attrs)
Type,user = l.result(r,60)
Name,Attrs = user[0]
if hasattr(Attrs, 'has_key') and Attrs.has_key('displayName'):
  displayName = Attrs['displayName'][0]
  print displayName

sys.exit()

在输入myusername@mydomain.co.uk password username后,我遇到了以下两种错误之一:

无效的凭据 - 当我输入错误的凭据或者故意使用错误的凭据时,认证失败。

ldap.INVALID_CREDENTIALS: {'info': '80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 52e, vece', 'desc': 'Invalid credentials'}

或者

ldap.OPERATIONS_ERROR: {'info': '00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece', 'desc': 'Operations error'}

我错过了什么步骤来正确绑定?

我在fedora和windows上遇到了相同的错误。


4
"…and all it is producing is tears."中的"tears"发音与"Beers"押韵。 - philshem
11个回答

0

对我来说,从 simple_bind_s() 切换到 bind() 就可以解决问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接