Harley Asked: 2009-07-22 21:25:22 +0800 CST2009-07-22 21:25:22 +0800 CST 2009-07-22 21:25:22 +0800 CST 单个用户为 LDAP 查询返回多个条目 772 问完这个问题后,我有一个如下所示的 LDAP 查询: (&(cn=*)(networkAddress=*)(objectClass=user)) 但是,如果用户有多个cn',则它们会被多次返回。有没有办法阻止这种情况发生? search ldap 3 个回答 Voted Best Answer geoffc 2009-07-24T03:33:51+08:002009-07-24T03:33:51+08:00 因为在许多模式实现中 CN 是多值的,并且不能保证是唯一的,所以一般规则是使用单值且应该是唯一的属性,例如 uid。 在 Active Directory 中,对于单个域,您可以依赖 sAMAccountName,但如果树/林中有多个域,则不能。您可能可以依赖 userPrincipalName,它通常结构为 [email protected],但与 sAMAccountName 不同的是,没有验证这实际上是一个唯一值。 实验上我注意到(好吧,我打错了)UPN 几乎可以是任何值,并且没有强制执行。 benc 2009-07-23T21:43:54+08:002009-07-23T21:43:54+08:00 这对我来说听起来像是正确的结果...... 如果你使用像 ldapsearch 这样的工具会发生什么? KAPes 2009-07-31T19:36:22+08:002009-07-31T19:36:22+08:00 我对 python 数据类型一无所知,但你不能只捕获对象中的输出,然后检查它是数组还是字符串。如果它的数组只取第一条记录,如果它是一个字符串,则直接取它。 我的意思是这就是我在 vbscript 中为用户处理与组成员身份相关的查询的方式。
因为在许多模式实现中 CN 是多值的,并且不能保证是唯一的,所以一般规则是使用单值且应该是唯一的属性,例如 uid。
在 Active Directory 中,对于单个域,您可以依赖 sAMAccountName,但如果树/林中有多个域,则不能。您可能可以依赖 userPrincipalName,它通常结构为 [email protected],但与 sAMAccountName 不同的是,没有验证这实际上是一个唯一值。
实验上我注意到(好吧,我打错了)UPN 几乎可以是任何值,并且没有强制执行。
这对我来说听起来像是正确的结果......
如果你使用像 ldapsearch 这样的工具会发生什么?
我对 python 数据类型一无所知,但你不能只捕获对象中的输出,然后检查它是数组还是字符串。如果它的数组只取第一条记录,如果它是一个字符串,则直接取它。
我的意思是这就是我在 vbscript 中为用户处理与组成员身份相关的查询的方式。