簡體   English   中英

通過 LDAP (ldap3 Python) 從 Windows 服務器的 Active Directory 獲取所有用戶信息

[英]Getting all usersinfos from Windows server's Active Directory via LDAP (ldap3 Python)

我想從 Windows 服務器的 Active Directory 中獲取每個用戶的信息(名字、姓氏、電子郵件)。 因此,我使用 ldap3(python)並使用我的管理日志成功連接到服務器(使用 HyperV Windows Server 2022):

from ldap3 import Server, Connection, ALL, NTLM, SAFE_SYNC
server = Server('ldap://172.28.63.240', get_info=ALL)
conn = Connection(server, user="TESTJER\Administrator", 
password="my_admin_password",client_strategy=SAFE_SYNC, auto_bind=True)

status, result, response, _ = conn.search('OU=Users2,DC=testjer,DC=local', 
'(givenName=*)')
print(response)

但是我將來需要連接到多個不同的服務器,所以我認為我不能(這可能是個壞主意)擁有一個管理員帳戶來查看每個客戶端服務器上的所有內容?

所以我嘗試通過安裝 AD LDS 並選擇實例名稱、描述、端口等來初始化實例...

但是我無法通過指定端口連接到 python,如果我不輸入端口就可以連接,這意味着實例無用。

ldap3.core.exceptions.LDAPBindError:自動綁定不成功 - invalidCredentials

我的需求是否使我必須安裝一個實例,該實例的用法只能查看用戶信息而不能查看其他信息? 如何?

我做了什么來創建實例:

在此處輸入圖像描述

在此處輸入圖像描述

在此處輸入圖像描述

在這里,我完全不確定在這里寫什么,但我猜想 OU=Users2 意味着只獲取 Users2。 這就是我想要的,因為我的用戶是:

在此處輸入圖像描述

在這里,我看到無論如何我都必須為用戶創建一個用戶,所以我別無選擇,我實際上輸入了我的管理員帳戶,但將來每個客戶都必須為我創建一個帳戶:

在此處輸入圖像描述

最后我想我必須在這里選擇“MS-User.LDF”: 在此處輸入圖像描述

from ldap3 import Server, Connection, ALL, NTLM, SAFE_SYNC
server = Server('ldap://172.28.63.240', port=50001, get_info=ALL)
conn = Connection(server, user="TESTJER\Administrator", 
password="my_admin_password",client_strategy=SAFE_SYNC, auto_bind=True)

status, result, response, _ = conn.search('OU=Users2,DC=testjer,DC=local', 
'(givenName=*)')
print(response)

ldap3.Connection.search()默認為 AD 返回最多 1000 個條目

您想將ldap3.Connection.extend.standard.paged_search()用於 AD。 搜索參數基本上與常規搜索相同,但是這個 function 將作為返回生成器 object 為您提供所有 ldap 條目。為了然后以可解析的格式獲取所有結果,只需將其列表轉換或 for 循環通過它!

ad_entries = list(ldap_conn.extend.standard.paged_search())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM