簡體   English   中英

如何使用 python ldap3 庫進行 DN 解析

[英]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,您可以使用以下方式登錄:

  • sAMAccountName
  • 用戶主體名稱

提示:通常,用戶會知道他們的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.

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