![单个用户返回多个 LDAP 查询条目](https://linux22.com/image/488781/%E5%8D%95%E4%B8%AA%E7%94%A8%E6%88%B7%E8%BF%94%E5%9B%9E%E5%A4%9A%E4%B8%AA%20LDAP%20%E6%9F%A5%E8%AF%A2%E6%9D%A1%E7%9B%AE.png)
询问后这个问题,我有一个如下所示的 LDAP 查询:
(&(cn=*)(networkAddress=*)(objectClass=user))
但是,如果用户有多个cn
,则会返回多次。 有办法阻止这种情况发生吗?
答案1
由于许多模式实现中的 CN 是多值的,并且不能保证是唯一的,所以一般规则是使用单值且应该是唯一的属性,例如 uid。
在 Active Directory 中,对于单个域,您可以依赖 sAMAccountName,但如果树/林中有多个域,则不能依赖。您可能能够依赖 userPrincipalName,其结构通常为[电子邮件保护]但与 sAMAccountName 不同,没有验证这实际上是一个唯一值。
我通过实验注意到(好吧,我犯了一些拼写错误)UPN 可以是任何值,并且没有强制要求。
答案2
对我来说这听起来是正确的结果......
如果您使用像 ldapsearch 这样的工具会发生什么情况?
答案3
我对 python 数据类型一无所知,但是你不能只捕获对象中的输出,然后检查它是数组还是字符串。如果是数组,则只取第一条记录,如果是字符串,则直接取它。
我的意思是这就是我在 vbscript 中处理用户组成员资格相关查询的方式。