【发布时间】:2021-04-06 07:28:42
【问题描述】:
当目标基本 DN 的最低元素是组 CN(实际上不是用户/个人对象)时,是否有办法编写 LDAP 搜索过滤器字符串或基本 DN 语法以获取具有匹配 sAMAccountName 属性的用户?以前从未使用过 LDAP 查询,因此对如何执行此操作不是很了解。
有一个组 CN 的 AD 路径,例如...
DC=myorg,DC=local
OU=datagroups
OU=zones
CN=group1
CN=group2
...
...并且有两个参数可用于匹配登录字符串:
- 将被
python-ldap.search_s()function 接受为basearg 的单个基本DN(例如OU=zones,OU=datagroups,DC=myorg,DC=local)。 - 一个搜索过滤器字符串,作用于该基本 DN,并返回一个与
sAMAccountName匹配的单个用户/个人,该用户/个人将用作python-ldap.search_s()function 中的filterstr参数。默认格式为'sAMAccountName={login}'
也试过
base_dn = OU=zones,OU=datagroups,DC=myorg,DC=local
search_filter = (&(sAMAccountName={login})(|(memberOf=CN=zone1,OU=zones,OU=datagroups,DC=myorg,DC=local)(memberOf=CN=zone2,OU=zones,OU=datagroups,DC=myorg,DC=local)))
无济于事。
有更多经验的人知道我该怎么做吗?我似乎对这种情况有什么误解(再说一次,我不经常使用 LDAP 查询)?
【问题讨论】:
-
如果您有默认格式,为什么要更改它?
{login}=sAMAccountName回到前面。属性名在前。 -
@user207421 在我的代码中实际上是
sAMAccountName={login}。不过我不知道这很重要,谢谢。我只是在这篇文章中以另一种方式写了它,因为再次不知道这很重要(编辑了这里的帖子以反映)。 -
只要您指定子树搜索并且那些
memberOf测试匹配,它应该可以工作。 -
@user207421 是的,我认为你是对的。问题是一个帖子有点过时了,因为我正在调试一些相关的东西,我认为这可能是潜在的问题,一旦完成就会更新(并希望得到答案)。
标签: ldap ldap-query python-ldap