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