簡體   English   中英

如何在ldap3中讀取給定DN的屬性(如果沒有過濾器,如何使用ldap3進行搜索)

[英]how to read attributes for given DN in ldap3 (how to search with ldap3 if no filter)

如果我已有LDAP DN,如何使用ldap3.Connection.search()獲取該DN的屬性? 沒有其他搜索條件,我已經有了DN ...

我嘗試搜索dn屬性,但沒有找到任何對象。 我還嘗試強制search_filter'''()'None ,它們都返回格式錯誤的過濾字符串。

我也找不到用抽象的閱讀器做到這一點的方法......

ldapsearch ,如果您正在進行baseDN查找,則無需指定搜索過濾器...

import ldap3

ldap_conn = ldap3.Connection('ldapserver', raise_exceptions=True, 
    auto_bind=True, user='me', password='mypassword')

my_dn = "attrib1=blahblah, ou=org1, dc=dc1, dc=dcroot"

ldap_conn.search(
    search_base=my_dn,
    search_filter= '(????)', # required
    search_scope=ldap3.BASE,
    attributes='*'
)

print(ldap_conn.response)

我剛剛意識到objectClass將始終存在,因此將其設置為通配符應該shim search_filter以返回與基本DN關聯的1條目:

ldap_conn.search(
    search_base=my_dn,
    search_filter= '(objectClass=*)', # required
    search_scope=ldap3.BASE,
    attributes='*'
)

然而,對於ldap3中給定DN的連接,LOOKUP操作沒有特殊情況。

編輯 :@cannatag提到這是協議的限制,所以我決定檢查RFC :( RFC 4511) 顯然, ldapsearch和Active Directory通過設置objectClass存在過濾器來模擬x.500樣式的LIST或READ:

請注意,客戶端可以通過過濾器檢查是否存在“objectClass”屬性來模擬X.500“類似列表”的操作,並且X.500“類似”操作可以使用相同的過濾器通過baseObject搜索操作進行模擬。 提供到X.500的網關的服務器不需要使用讀取或列表操作,盡管它可以選擇這樣做,如果確實如此,它必須提供與X.500搜索操作相同的語義。

暫無
暫無

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

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