公司范围内的用户名政策和解决重复的最佳实践或经验

Pet*_*ter 8 active-directory ldap user-management

我是一名程序员,其应用程序需要集成到新的公司范围的 Active Directory 登录方案中。这意味着更改我们系统中的所有用户名以使用新方案。新方案是“名字首字母,姓氏”,因此 Joe Smith 的用户名将是 jsmith。如果 John Smith 现在被聘用,他将得到 jsmith2。但是一旦 Joe 离开公司,他的 AD 帐户就会被删除,而 jsmith 又可以使用了。因此,如果现在雇用吉尔史密斯,她会得到 jsmith。从应用程序的角度来看,这在我看来会造成问题,因为我现在可以拥有无​​法区分的与 Joe 相关的记录和与 Jill 相关的记录,因为它们都是由“jsmith”创建的。

因此,我想知道是否有标准或最佳实践可以解决在组织范围内的目录中重复使用用户名的问题,尤其是在大公司中。当我在会议上提出我的担忧时,有人告诉我“[大公司名称] 没有办法保留每个离开公司的用户的记录”,这让我觉得很疯狂。那么,是否有一个普遍接受的解决方案来处理用户名?还是每家公司都在进行时弥补?

Joh*_*nie 7

Windows 通过使用 GUID 来标识每个帐户来解决这个问题。用户名只是装饰。您会发现旧的 jsmith 和新的 jsmith 具有不同的 GUID,即使用户名相同。

您可以将一个 GUID 与您应用中的每个帐户相关联吗?如果我考虑一下,我可能会告诉您如何获取用户的 GUID。它将是活动目录中用户的一个属性。

JR


Jim*_*m B 5

是的,我们保留了每一个雇佣过的用户。我通常建议使用第一个首字母、中间首字母、姓氏来最小化 JQPublic1 帐户的数量,但它确实发生了,但是从 AD 的角度来看,用户只是数字。您可以使用此脚本查看任何帐户的号码:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get ("Win32_UserAccount.Name='myusername',Domain='mydomain'")
Wscript.Echo objAccount.SID
Run Code Online (Sandbox Code Playgroud)

作为免费奖励,以下是将sid 转换为用户名的方法

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get ("Win32_SID.SID='S-1-5-21-1454471165-1004336348-1606980848-5555'")
Wscript.Echo objAccount.AccountName
Wscript.Echo objAccount.ReferencedDomainName
Run Code Online (Sandbox Code Playgroud)