[英]Get user status (disabled or active) in Active Directory with ldap3 Python
[英]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。 這就是我想要的,因為我的用戶是:
在這里,我看到無論如何我都必須為用戶創建一個用戶,所以我別無選擇,我實際上輸入了我的管理員帳戶,但將來每個客戶都必須為我創建一個帳戶:
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.