0

我正在开发一个应用程序,在该应用程序中,我根据他们的 RID 识别用户和组。因此,如果域上存在重复的 RID,就会出现问题。以下链接 http://support.microsoft.com/kb/315062 表示,如果管理员抓住了 RID 管理员的角色并且两个或多个用户同时请求 RID,则有可能。我想知道可能导致重复 RID 的其他可能性。

提前致谢。

4

1 回答 1

1

我在您的问题中不明白的是为什么您使用 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 使用不当造成的。

于 2011-06-13T07:48:40.470 回答