我正在开发一个应用程序,在该应用程序中,我根据其RID识别用户和组。因此,如果域上存在重复的RID,则会出现问题。以下链接http://support.microsoft.com/kb/315062表示如果管理员获取RID管理员的角色并且两个或多个用户同时请求RID,则可以使用此链接。我想知道可能导致重复RID的其他可能性。
提前致谢。
答案 0 :(得分: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来自{{3}}以在peUse
中检索。
使用.NET Framework(C#),SecurityIdentifier
可用于确定SID是否代表有效的域帐户。
最后一件事:通常用于区分目录中对象的方式是objectGUID
属性。该属性存在于每个对象中。因此,您可以使用SID或GUID
"LDAP:///<GUID={28c67c50-9778-47a4-a77a-bf56f238a0c4}>"
或
"LDAP:///<SID=S-1-5-21-500000003-1000000000-1000000003-1001>"
(在你的评论后编辑) 据我所知,域内的重复RID被视为一个例外,它由一个担任相对ID(RID)Master角色的域控制器丢失来解释。也许它存在能够修补AD数据库以更改SID的黑客工具,但我不知道它们。
小心,RID可能会在其他域中重复。如果您在林中有子域或其他树,您可以再次找到具有不同子权限的相同RID(在同一ACL中具有潜力)
我发现计算机SID中也有重复,但这是由于Ghost使用不当造成的。