问题描述
|
我正在开发一个应用程序,其中可以根据用户的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来自“授权功能”以在“ 1”中进行检索。
使用.NET Framework(C#),“ 2”可用于确定SID是否代表有效的域帐户。
最后一件事:区分目录中对象的常用方法是3属性。此属性存在于每个对象中。因此,您可以使用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使用造成的。