[英]How to do DN resolution using python ldap3 library
我正在實現一些基於活動目錄的登錄過程。 用戶將輸入他的郵件。
我已經通過郵件成功地在 AD 中找到了用戶數據庫條目 - 我搜索了:
(& (mail={0})(objectClass=organizationalPerson))
並獲得了很多關於用戶的屬性。
但是要檢查它的密碼,我需要執行一個綁定操作。 為此,我需要登錄名或 DN。
如何使用 python ldap3 解析/獲取我已經通過電子郵件地址找到的用戶的登錄名?
您可以使用剛剛發現的用戶對象的專有名稱 (DN) 登錄。 這是指向 LDAP 對象的指針,它不需要新的搜索。
在 python-ldap 中,這意味着您必須使用:
entry[0]
檢索該 DN 值。 只需使用該值加上用戶輸入的密碼即可綁定到服務器。
如果要使用屬性登錄,則需要知道包含登錄名的 LDAP 屬性名稱。 對於 Active Directory,您可以使用以下方式登錄:
提示:通常,用戶會知道他們的userPrincipalName
(UPN),因為它具有類似name@domain.com
的電子郵件樣式格式,並且很少與電子郵件地址相同(盡管不一定)。
在 python-ldap 中,這意味着您必須使用:
entry[1]['userPrincipalName'][0]
對於第一個 UPN 值。
執行 conn.search(...) 后,您可以獲得用戶 DN
conn.response[0]['dn']
不要擔心它看起來像
CN=username,OU=city,OU=company,DC=domain,DC=domain_ending
這是 DN。 另請記住,使用 DN 登錄時不要使用 authentication=NTLM。 在綁定管理員用戶進行搜索時,您可能使用了 authentication=NTLM。 也許用戶名是 DOMAIN\adminuser。 但這不是DN! DN 類似於上面的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.