使用LDAP在Active Directory中查找用户 - 没有用户?

时间:2015-04-02 10:41:50

标签: python-2.7 active-directory ldap

使用(python-ldap 2.4.17.0)我试图从AD(Active Directory)获取所有用户(用户名)的列表。
当我执行下面的代码时,它只提供了一个域信息列表,DNS服务器,关于Exchange Server的东西 - 我似乎无法找到与AD用户有关的任何事情 - 即使我去服务器并查看Active基础/根节点下的目录 - 有一个CN = Users,以及我需要的所有好东西!!!
但这并没有反映在代码中。任何人都知道为什么我无法通过代码看到用户?

import ldap

def main():

    con=ldap.initialize('ldap://192.168.16.12:389')
    try:
        res =con.search_s("DC=mycompany,DC=local", ldap.SCOPE_SUBTREE)
        for dn, entry in res:
        print dn
except Exception, error:
    print error

RESULT

DC=mycompany,DC=local
DC=ForestDnsZones,DC=mycompany,DC=local
DC=DomainDnsZones,DC=mycompany,DC=local
CN=Configuration,DC=mycompany,DC=local
CN=EXCH-FOOPLACE,CN=Public Folder Database 2,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Mycompany,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mycompany,DC=local
CN=EXCHANGE01,CN=Barplace-RegularMailBoxes,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Mycompany,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mycompany,DC=local
CN=EXCHANGE01,CN=Barplace-LargeMailBoxes,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Mycompany,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mycompany,DC=local
CN=EXCHANGE01,CN=Public Database,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Mycompany,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mycompany,DC=local
CN=EXCH-FOOPLACE,CN=Houston-Exchange02,CN=Databases,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=Mycompany,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mycompany,DC=local
CN=Schema,CN=Configuration,DC=mycompany,DC=local

2 个答案:

答案 0 :(得分:2)

在查询LDAP以获取完整的实体列表之前,您确实需要提供某种授权用户凭据,例如:

con=ldap.initialize('ldap://192.168.16.12:38')

user_dn = r"Administrator@foo.com"
password = "bar"

criteria = "(&(objectClass=user)(sAMAccountName=username))"
attributes = ['displayName', 'company']

try:
    con.simple_bind_s(user_dn, password)
    res =con.search_s("CN=Users,DC=foo,DC=com", ldap.SCOPE_SUBTREE,'(objectClass=User)')
    for dn, entry in res:
        print dn
except Exception, error:
    print error

答案 1 :(得分:0)

答案类似于@Vidar,但略有扩展:

originalBitmap

(c)https://rosettacode.org/wiki/Active_Directory/Search_for_a_user#Python