C#学习教程:ASP.NET-获取DirectoryEntry/SID共享的主体/相对标识符(RID)ASP.NET2.0Intranet应用程序中的用户,并将他们的sid与应用程序的配置文件相关联。使用ActiveDirectoryMembershipProvider,MembershipUser的ProviderUserKey对象看起来像这样SecurityIdentifiersid=(SecurityIdentifier)Membership.GetUser().ProviderUserKey;字符串sidValue=sid.ToString();/*sidValue="S-1-5-21-XXXX-XXXX-XXXX-YY"*/据我了解,YY是命名空间(又名组/域)中的主体。使用自定义MembershipProvider时,我可以使用DirectoryEntry对象的objectSid属性获取sidDirectoryEntryentry=newDirectoryEntry(path,username,password);SecurityIdentifiersid=newSecurityIdentifier((byte[])entry.Properties["objectSid"].Value,0);字符串sidValue=sid.ToString();/*sidValue="S-1-5-21-XXXX-XXXX-XXXX"*/在这种情况下,sidValue是相同的,只是它不包含主要的YY。我的问题是双重的。是否需要自我认同来唯一地识别一个人?是否可以从DirectoryEntry对象(或通过System.DirectoryServices提供的任何其他类)获取主体?编辑:进一步阅读({1}{2})后,我现在知道如果用户从一个组/域移动到另一个组/域,SID可能会改变。鉴于此,使用DirectoryEntryProperties["objectGUID"]定义的GUID是否是唯一标识用户的更好选择?objectGUID是识别用户帐户的最佳选择。我强调这一点是因为objectGUID对于帐户实例是唯一且固定的。如果您删除并重新创建具有相同专有名称的帐户,您将获得不同的对象GUID。所以objectGUID不标识用户,它标识一个帐户。所以如果你想识别一个帐户,使用objectGUID。有时,管理员可以删除并重新创建帐户来解决问题。如果发生这种情况后需要识别用户,则需要在帐户对象上选择其他内容。这可能需要取决于您的帐户定义策略。也许您的sAMAccountNames不是基于用户名?也许管理员填充了employeeid或employeeNumber?也许他们强制显示名称的唯一性?这是指向AD属性信息的链接。这是指向DirectoryEntry属性的链接。以上就是《ASP.NET——获取DirectoryEntry/SID的Subject/RelativeIdentifier(RID)》C#学习教程的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多加关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
