我尝试向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_connect()
返回的LDAP链接标识符。dn:
LDAP实体的可分辨名称。
我的问题是用户的DN不是唯一标识符!
让我们举个例子:
"cn=John Jones, o=My Company, c=US"
如何确保同一管理层中没有其他“John Jones”?
但是我注意到在函数doc的开头有:
ldap_mod_add — Add attribute values to current attributes
因此,应该是关于使用过滤器获得的条目?
在这种情况下,参数dn的实用程序是什么?
有人能帮助我理解吗?
提前谢谢
答案 0 :(得分:1)
DN(专有名称)必须是唯一的。虽然您可能有一个或多个具有cn=John Jones
值的用户,但它们不能共存于同一容器中(o=My Company, c=US
部分)。
如果您希望有两个名为John Jones的用户,它们可以存在于不同的容器中,但如果它们需要位于同一个容器中,那么您必须为其中至少一个设置不同的CN。
在某些目录服务中,其他属性也必须是唯一的。通常,uniqueID或uid在整个目录中应该是全局唯一的。所以你可能有一个jjones,不管它是什么容器,但另一个需要以某种方式不同。
Active Directory还有一项要求,即sAMAccountName在域中是全局唯一的,而userPrincipalName在林中是唯一的。
当您尝试创建具有相同完整DN的第二个用户或将具有冲突命名属性的用户移动到容器中时,通常该目录将失败并显示错误。对于这些情况,每个目录都有不同的错误代码。