一尘不染

使用python + ldap针对活动目录进行身份验证

python

如何使用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会给我两个错误之一:

Invalid Credentials -输入错误或故意使用错误的凭据时,它无法通过身份验证。

ldap.INVALID_CREDENTIALS:{‘info’:‘80090308:LdapErr:DSID-0C090334,评论:AcceptSecurityContext错误,数据52e,vece’,’desc’:’无效凭据’}

要么

ldap.OPERATIONS_ERROR:{‘info’:‘00000000:LdapErr:DSID-0C090627,注释:为了执行此操作,必须在连接上完成成功的绑定。,数据0,vece’,’desc’:’操作错误’}

我缺少正确绑定的东西吗?

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


阅读 154

收藏
2020-12-20

共1个答案

一尘不染

我不见了

l.set_option(ldap.OPT_REFERRALS, 0)

从init开始。

2020-12-20