Vid*_*dar 1 ldap active-directory python-2.7
使用 (python-ldap 2.4.17.0) 我试图从 AD (Active Directory) 获取我们所有用户(用户名)的列表。
当我执行下面的代码时,它只提供域信息、DNS 服务器、有关 Exchange 服务器的内容的列表-我似乎找不到与 AD 用户有关的任何事情-即使当我转到服务器并查看 Active base/root 节点下的目录 - 有一个 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
Run Code Online (Sandbox Code Playgroud)
结果
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
Run Code Online (Sandbox Code Playgroud)
发现在查询 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
Run Code Online (Sandbox Code Playgroud)