问题描述
我从LDAP得到这样的示例结果:
USERID123,Users,UserProvisioning,Production,ztb.icb.company.com
dn: CN=USERID123,OU=Users,OU=UserProvisioning,OU=Production,DC=ztb,DC=icb,DC=company,DC=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: USERID123
sn: Mueller
c: DE
l: Frankfurt
title: M.Sc.
telephoneNumber: +49 69 136 27289
givenname: Lukas
distinguishedname: CN=USERID123,DC=zt
b,DC=com
instanceType: 4
whenCreated: 20191023230941.0Z
whenChanged: 20200907052944.0Z
displayName: Mueller,Lukas
uSNCreated: 21302914
memberOf: CN=GG_APP-013979-DQI-KYC-PROD-CONSUMER-GCRR,OU=Groups,OU=UserProvisi
oning,DC=com
memberOf: CN=GG_APP-013479-DQI-KYC-DEV-CONSUMER-GCRR,DC=com
memberOf: CN=GG_APP-011479-DQI-KYC-TUD-CONSUMER-GCRR,DC=com
我正在尝试获取Python LDAP3中用户“ USERID123”的所有“ memberOf”。
我尝试了以下操作:
if conn.bind():
conn.search(
search_base='OU=Groups,DC=com',search_filter='(objectClass=group)',search_scope='SUBTREE',attributes=['memberOf']
)
for entry in conn.entries:
print(entry.memberOf.values)
但是我无法在conn.search中重新创建查询以查找特定用户的“ memberOf”。如何执行此查询以在ldap3查询中获得所需的结果?
解决方法
您可以在“来自LDAP的示例结果”中看到memberOf的所有值。
如果您确实要查询所有组,则用户是Member的用户,那么您的搜索将更像是:
conn.search( search_base='OU=Groups,OU=UserProvisioning,OU=Production,DC=ztb,DC=icb,DC=company,DC=com',search_filter='&((objectClass=group)(member=CN=USERID123,OU=Users,DC=com))',search_scope='SUBTREE',attributes=['member']
或者,如果使用Microsoft Active Directory,请使用以下过滤器:
(member:1.2.840.113556.1.4.1941:=(CN=USERID123,DC=com))