一般来说,对于 Active Directory,大多数公司使用什么作为人们的唯一标识符?

In general with Active Directory, what do most companies use as unique identifier for people?

我正在尝试构建一个数据库来存储 users/employees 的 Active-Directory 条目。

  1. 假设查询是否安全:(objectClass=person)

  2. 我应该将什么属性存储为唯一标识符而不是 DN?例如我应该使用 mail 还是 uid

此外,当员工被停用时,是否添加了新属性,或者他们只是从 AD 中完全删除?

你问的问题似乎有点主观,但我会从 AD 中可用的一般选项和遵循的通常做法的上下文中讨论它。

  1. Is it safe to assume to query on: (objectClass=person)?

所有创建的用户都属于 (objectClass=person) 类别。但是,如果您创建一个通用用户以在系统上进行文件共享访问(通过 ADUC(dsa.msc) / powershell / C# 等),这不是雇员,那么在这种情况下,它会违反你的搜索条件尽管是一个人 class。我能想到很多其他场景,在这些场景中,不可能避免创建通用用户(这将再次位于 person objectClass 中),至少从中型及以上公司的角度来看是这样。

因此,在这种情况下,最好在您的环境中遵循命名约定以避免任何此类混淆。一个示例可以是,假设将非员工用户的 UPN/sAMAccountName 设置为从 genXXXX 开始,您以后就可以轻松搜索所有员工用户。

  1. What attribute should I store as a unique identifier that isn't the DN? e.g. should I use mail or uid?

AD 中已有可用的唯一标识符,例如 objectGUIDobjectSid。在域中,sAMAccountName/UPN 值也是唯一的。但是,您不能依赖它进行林级搜索。

当用户迁移到另一个域时,用户的

objectSid 可以更改,但 objectGUID 永远不会更改。您可以阅读有关 SIDs versus GUIDs here.

的更多信息

Also when an employee gets de-activated is there a new attribute that gets added or are they simply removed entirely from AD?

AD端没有自动触发。有一个名为 lastLogontimeStamp 的属性有助于跟踪用户或计算机帐户何时登录到域(不是实时场景,而是最近的场景 - 取决于它是否保持正确更新)。

如果 employee/user 离开组织,则必须有人手动 disable/delete 帐户。针对这种场景,企业有流程设置,门禁管理解决方案与AD模块联动,负责用户的进出,并在AD中执行相关操作。


希望对您提出的问题有一个大概的管理思路。