我一直在使用givenName+" "+surname
CN 字段,昨晚我醒来时尖叫着“John Smith 呢?” 我可以想象任何大型组织雇用多个同名人员。所以这当然行不通。人们改用什么?
编辑注:在inetOrgPerson
CN 中是 DN 的一部分。
编辑注意:在这种情况下,我预计会增长到数十万个用户条目。
我一直在使用givenName+" "+surname
CN 字段,昨晚我醒来时尖叫着“John Smith 呢?” 我可以想象任何大型组织雇用多个同名人员。所以这当然行不通。人们改用什么?
编辑注:在inetOrgPerson
CN 中是 DN 的一部分。
编辑注意:在这种情况下,我预计会增长到数十万个用户条目。
在 LDAP 目录中,无论是 OpenLDAP 还是 Active-Directory,规则是 DistinguishName (DN) 必须是唯一的,与用于构成相对可分辨名称 (RDN) 的属性(或多个属性)无关。
人们如何确保它是独一无二的:
我想说的是,在小型企业中,在目录中创建条目的人保证它是唯一的,首先是知识,其次是初步搜索。如果出现重复,他会找到一些解决方案,例如“John E Smith”。如果名称更改(结婚、离婚等),使用此解决方案,LDAP 记录必须从一个 DN“移动”到另一个。最好尽可能避免更改条目的 DN,但在小目录中这并不重要。
在中型企业中,唯一性大部分时间是由来自人力资源的员工 ID 赋予的。例如 FR12345678。我看到,在大公司,人们使用员工 ID 登录。对于我在这里描述的事情,uid
尽管使用属性来命名对象更为标准cn
(但有些目录不允许您选择命名属性,我认为这是 X500 的功能)。
在大多数目录中(不在 AD 中),您可以使用多个属性来组成 RDN。例如sn=Assin+TelephoneNumber=1234
,在 openLDAP 中是一个有效的 RDN,它在 PBX 中是有意义的。还有一件事
在某些目录(为系统管理而设计)中,某些属性由服务器端测试为在整个树中都是唯一的。这就是Active-DirectorysAMAccountName
或userPrincipalName
在 Active-Directory 中的情况,它们用于记录目的。使用带有“given-Name Name”的 CN 属性要求管理员保证唯一性。您可以在 OpenLDAP 中的数据库定义中使用唯一属性slapd.conf
,添加:
# index since the unique overlay will search for matching mail attributes
index mail eq
overlay unique
unique_attributes mail
如果未编译唯一覆盖,则需要重新编译:
./configure ... --enable-unique
用我的一些经验补充 JPBlanc 的答案。我们有几个我工作的 ldap 服务器/树。我们的 AD 服务器使用 DisplayName 作为 CN 的值。在 4K+ 用户中,我们只有少数出现重复的情况。我相信如果存在欺骗,默认操作是在值上加上 1。即使在该用户群的最大部分具有很高的转换率,这种情况也非常罕见。我们有两个不同的电子目录树,它们相互链接并且使用用户名。用户名是首字母+姓氏。那里的任何重复项都附有一个递增的数字。正如您可以想象的那样,Browns 和 Smiths 以及其他常见名称经常发生这种情况。另一棵树是 ADLDS(以前的 ADAM)目录,它使用为每个新条目生成的唯一编号作为 CN。它基本上是一个自动递增的数字,由外部加载过程控制。最后,我们有一个外部合作伙伴(想想独立代理)的目录,它使用电子邮件地址 + 一个 ID 号的组合作为 CN。
我在用户群上做了很多维护工作,我最不喜欢的方案是外部生成的数字。如果我在所有其他系统中收到有关 Joe Brown 的支持电话,我至少可以知道我需要在哪里浏览以找到他。当然,一个简单的搜索过滤器会给我所有的 Browns,但我仍然必须编写并执行它。所以我的建议是使用 CN 名称的一部分并以某种方式确保唯一性。从管理的角度来看,这会更容易一些。确实 CN 很重要,但您将更多地处理其他用户属性,所以不要太担心。