2

我尝试向 Active Directory 中存在的某些用户添加属性,但我很难理解如何确保将此属性添加到好用户。

有关此函数的 PHP 文档指出:

ldap_mod_add — Add attribute values to current attributes

Description :

bool ldap_mod_add ( resource $link_identifier , string $dn , array $entry )

将一个或多个属性添加到指定的 dn。它在属性级别而不是对象级别执行修改。对象级的添加由ldap_add()函数完成。

对于参数:

link_identifier :
一个 LDAP 链接标识符,由ldap_connect().

dn :
LDAP 实体的专有名称。

我的问题是用户的 DN 不是唯一标识符!

让我们例如设置:

"cn=John Jones, o=My Company, c=US"

如何确定同一管理层中没有其他“约翰·琼斯”?

但我注意到在函数文档的开头有:

ldap_mod_add — Add attribute values to current attributes

因此,它应该是关于使用过滤器获得的条目?

在这种情况下,参数 dn 的用途是什么?

有人可以帮我理解吗?

先感谢您

4

1 回答 1

1

DN(专有名称)必须是唯一的。虽然您可能有一个或多个具有cn=John Jones值的用户,但它们不能共存于同一个容器(o=My Company, c=US部件)中。

如果您希望有两个名为 John Jones 的用户,他们可以存在于不同的容器中,但如果他们需要在同一个容器中,那么您必须为其中至少一个设置不同的 CN。

在某些目录服务中,其他属性也需要是唯一的。通常,uniqueID 或 uid 在整个目录中应该是全局唯一的。所以你可能有一个 jjones,不管它在什么容器中,但另一个需要以某种方式有所不同。

Active Directory 有一个附加要求,即 sAMAccountName 在域中是全局唯一的,而 userPrincipalName 在林中是唯一的。

通常,当您尝试创建具有相同完整 DN 的第二个用户或将具有冲突命名属性的用户移动到容器中时,该目录将失败并显示错误。对于这些情况,每个目录都有不同的错误代码。

于 2013-09-22T23:48:11.437 回答