我正在开发一个应用程序,在该应用程序中,我根据他们的 RID 识别用户和组。因此,如果域上存在重复的 RID,就会出现问题。以下链接 http://support.microsoft.com/kb/315062 表示,如果管理员抓住了 RID 管理员的角色并且两个或多个用户同时请求 RID,则有可能。我想知道可能导致重复 RID 的其他可能性。
提前致谢。
我正在开发一个应用程序,在该应用程序中,我根据他们的 RID 识别用户和组。因此,如果域上存在重复的 RID,就会出现问题。以下链接 http://support.microsoft.com/kb/315062 表示,如果管理员抓住了 RID 管理员的角色并且两个或多个用户同时请求 RID,则有可能。我想知道可能导致重复 RID 的其他可能性。
提前致谢。
我在您的问题中不明白的是为什么您使用 RID 来区分用户和组。这些对象来自不同的类,因此它们自然是有区别的。
在 Win32 编程中,您可以使用:
BOOL WINAPI LookupAccountSid(
__in_opt LPCTSTR lpSystemName,
__in PSID lpSid,
__out_opt LPTSTR lpName,
__inout LPDWORD cchName,
__out_opt LPTSTR lpReferencedDomainName,
__inout LPDWORD cchReferencedDomainName,
__out PSID_NAME_USE peUse
);
如果 SID 是用户或组,此 API 来自授权函数以检索。peUse
使用 .NET Framework (C#)SecurityIdentifier
可用于确定 SID 是否代表有效的域帐户。
最后一件事:通常用于区分目录中对象的方式是objectGUID
属性。该属性存在于每个对象中。因此,您可以使用 SID 或 GUID 从 Active Directory 服务接口 (ADSI) 检索对象
"LDAP:///<GUID={28c67c50-9778-47a4-a77a-bf56f238a0c4}>"
或者
"LDAP:///<SID=S-1-5-21-500000003-1000000000-1000000003-1001>"
(在您的评论后编辑)据我所知,域内的重复 RID 被认为是一个异常,原因是丢失了充当相对 ID (RID) 主机角色的域控制器。也许它存在能够修补 AD 数据库以更改 SID 的黑客工具,但我不知道它们。
请注意,RID 可能在其他域中重复。如果您的森林中有子域或其他树,您可以再次找到具有不同子权限的相同 RID(可能在同一 ACL 中)
我发现计算机 SID 中也有重复,但这是由于 Ghost 使用不当造成的。