我需要一种识别用户的方法,即使我们的电子邮件或用户名命名约定发生变化,该方法也不会改变;过去这些约定确实发生了变化。我们使用 LDAP,但我们的国际办事处使用 Active Directory,因此我在这方面还不太熟悉。
我从转储中注意到,所有用户都为 uSNCreated 分配了一个唯一值。对于用户来说,这个值是全局唯一的吗?如果他们的任何属性发生变化,这个值会改变吗?这是我为 AD 寻找的唯一标识符的圣杯吗?!
答案1
@sysadmin1138 的回答有点误导。uSNCreated 与时间无关;它仅在 DC 上是唯一的。它是对象创建时 DC 的“highestCommittedUsn + 1”。他可能将其与 whenCreated 混淆了,后者是一个 64 位数字,表示自 1601 年 1 月 1 日凌晨 12:00 以来的 100 纳秒间隔数...并且也不一定是唯一的。但是他正确地指出,objectGuid 以及 objectSid 最适合用于通过属性更改来跟踪对象。两者始终在所有用户对象上设置,并且永远不会在不删除和重新创建对象的情况下发生变化...此时,跟踪对象的所有赌注都无效!
答案2
为什么不使用 Microsoft 使用的值 - SID?它以二进制形式存储在对象标识符属性。这样做的另一个好处是,如果您的用户将来在域之间移动,objectSid 将存储在sID历史这样您就可以协调这些变化。
答案3
该字段实际上是一个狡猾的日期时间字段,不能保证是唯一的。更好的字段是“objectGUID”。它是唯一的。