【问题标题】:What do people use for CN with inetOrgPerson in LDAP directories人们在 LDAP 目录中使用带有 inetOrgPerson 的 CN
【发布时间】:2011-10-18 22:32:15
【问题描述】:

我在 CN 领域一直使用givenName+" "+surname,昨晚我醒来时尖叫着“John Smith 呢?”我可以想象任何大型组织雇用多个同名人员。所以这当然行不通。人们改用什么?

编辑注意:在inetOrgPerson 中,CN 是 DN 的一部分。

编辑注意:在这种情况下,我预计用户条目会增长到数十万。

【问题讨论】:

  • commonNamecn 是一个多值属性。可以将附加值插入“John Smith”以进一步识别条目。条目的主键 distinguished namedn 对于每个托管或影子 DIT 都是唯一的。此外,不要陷入尝试在特定于供应商的基础上与 LDAP 交互的陷阱。坚持 LDAP 标准,避免以“微软方式”或“OpenLDAP 方式”做事的陷阱。
  • @Terry Gardner 谢谢。 inetOrgPerson 不是特定于 OpenLDAP 的,对吗?
  • 没有。 inetOrgPerson 在 RFC 中定义。
  • @downvoter 这个问题有问题吗?请解释。好奇的人想知道。

标签: ldap openldap schema-design


【解决方案1】:

在 LDAP 目录中,无论是 OpenLDAP 还是 Active-Directory,规则是 DistinguishName (DN) 必须是唯一的,独立于用于构成相对可分辨名称 (RDN) 的属性(或多个属性)。

人们如何确保它是独一无二的:

  1. 我想说,在小型企业中,在目录中创建条目的人保证它是唯一的,首先是知识,其次是初步搜索。如果出现重复,他会找到一些解决方案,例如“John E Smith”。如果名称更改(结婚、离婚等),使用此解决方案,LDAP 记录必须从一个 DN“移动”到另一个。最好尽可能避免更改条目的 DN,但在小目录中这并不重要。

  2. 在中型企业中,唯一性通常由来自人力资源的员工 ID 提供。例如 FR12345678。我看到,在大公司,人们使用他们的员工 ID 登录。对于我在这里描述的事情,尽管有cn,但使用uid 属性来命名对象更为标准(但有些目录不允许您选择命名属性,我认为这是一个 X500 功能)。

  3. 在大多数目录中(不是在 AD 中),您可以使用多个属性来组成 RDN。例如,sn=Assin+TelephoneNumber=1234 在 openLDAP 中是一个有效的 RDN,它在 PBX 中是有意义的。 还有一件事

在某些目录(为系统管理而设计)中,某些属性由服务器端测试为在整个树中都是唯一的。这就是 Active-Directory 中的 sAMAccountNameuserPrincipalName 的情况,它们用于记录目的。使用带有“given-Name Name”的 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

【讨论】:

  • 在波多黎各和大多数西班牙裔国家,我们会附加母亲的娘家姓,例如:FRANK RIVERA RODRIGUEZ,其中 RODRIGUEZ 是母亲的娘家姓。这是西班牙裔国家的标准用法,虽然不是全部,但增加了更多的独特性。如果我们无法实现唯一性,我们会在 Mothers 娘家姓后附加 pk_id(自动编号)以保证唯一性。
【解决方案2】:

以我的一些经验补充 JPBlanc 的答案。我们有几个我工作的 ldap 服务器/树。我们的 AD 服务器使用 DisplayName 作为 CN 的值。在 4K+ 用户中,我们只有少数出现重复的情况。我相信如果存在欺骗,默认操作是在值上加上 1。即使在该用户群的最大部分具有很高的转换率,这种情况也非常罕见。我们有两个不同的电子目录树,它们相互链接并且使用用户名。用户名是首字母+姓氏。那里的任何重复项都附有一个递增的数字。正如您可以想象的那样,Browns 和 Smiths 以及其他常见名称经常发生这种情况。另一棵树是 ADLDS(以前的 ADAM)目录,它使用为每个新条目生成的唯一编号作为 CN。它基本上是一个自动递增的数字,由外部加载过程控制。最后,我们有一个外部合作伙伴(想想独立代理)的目录,它使用电子邮件地址 + 一个 ID 号的组合作为 CN。

我在用户群上做了很多维护工作,我最不喜欢的方案是外部生成的数字。如果我在所有其他系统中收到有关 Joe Brown 的支持电话,我至少可以知道我需要在哪里浏览以找到他。当然,一个简单的搜索过滤器会给我所有的 Browns,但我仍然必须编写并执行它。所以我的建议是使用 CN 名称的一部分并以某种方式确保唯一性。从管理的角度来看,这会更容易一些。 CN 确实很重要,但您将更多地处理其他用户属性,所以不要太费劲。

【讨论】:

  • 非常感谢。我得出了大致相同的结论。我们计划至少有成千上万的用户:他们是真正的订阅者,所以多年来这个目录可能会变得庞大,甚至数十万。作为另一个数据点,在我工作的一个地方,有 12,000 名员工和一支浮动的承包商大军,我在大约十年的时间里找到了 Epitt4,因为我是浮动承包商之一,IT 无法识别我之前的存在。
猜你喜欢
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
  • 2021-08-31
  • 2011-01-18
  • 1970-01-01
相关资源
最近更新 更多