代码之家  ›  专栏  ›  技术社区  ›  Russ Cam

ASP.NET-获取DirectoryEntry/SID的主体/相对标识符(RID)

  •  5
  • Russ Cam  · 技术社区  · 16 年前

    我正在自定义MembershipProvider类中使用Active Directory对ASP.NET 2.0 intranet应用程序中的用户进行身份验证,并将其sid与应用程序的配置文件相关联。

    ActiveDirectoryMembershipProvider 如果使用,则 ProviderUserKey 对象 MembershipUser 详情如下:

    SecurityIdentifier sid = (SecurityIdentifier)Membership.GetUser().ProviderUserKey;
    string sidValue = sid.ToString();
    
    /* sidValue = "S-1-5-21-XXXX-XXXX-XXXX-YY"  */
    

    据我所知, YY 命名空间中的主体(也称为组/域)。

    objectSid DirectoryEntry对象的属性

    DirectoryEntry entry = new DirectoryEntry(path, username, password);
    SecurityIdentifier sid = new SecurityIdentifier((byte[])entry.Properties["objectSid"].Value, 0);
    string sidValue = sid.ToString();
    
    /* sidValue = "S-1-5-21-XXXX-XXXX-XXXX"  */
    

    sidValue 在本例中,除不包含主体外,其他内容相同 YY

    我的问题有两个方面

    1. 是否需要委托人来唯一识别个人?
    2. System.DirectoryServices )?

    编辑:

    做了进一步的阅读( {1} {2} ),我现在知道,如果用户从一个组/域移动到另一个组/域,sid可能会更改。鉴于此,使用 GUID 定义在 DirectoryEntry Properties["objectGUID"] 是否是唯一标识用户的更好选择?

    1 回复  |  直到 16 年前
        1
  •  3
  •   serialhobbyist    16 年前

    objectGUID是识别用户的最佳选择

    因此,如果要标识帐户,请使用objectGUID。

    这里有一个链接到 AD attribute info . 这里有一个链接到 DirectoryEntry Properties .