Active Directory"成员的不同结果"在不同的电脑上

时间:2015-10-21 02:10:18

标签: c# asp.net .net active-directory

我有一些代码可以检索用户所属的Active Directory组。在localhost上,它返回正确的结果,但是当部署到另一台计算机(同一网络上的Web服务器)时,它返回的结果要少得多。

我正在指定AD服务器以及管理员为访问而提供的特殊用户名和密码。

DirectoryEntry de = new DirectoryEntry("LDAP://***:389", "***", "***");
DirectorySearcher ds = new DirectorySearcher(de);
ds.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + search + "))";
ds.SearchScope = SearchScope.Subtree;
ds.PropertiesToLoad.Add("*");
SearchResult rs = ds.FindOne();
if (rs != null)
{
    if (rs.GetDirectoryEntry().Properties["memberof"].Value != null)
    //rest of code removed

我也尝试了不同的方法,结果也不同......

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "***, "***", "***"))
{
    UserPrincipal user = UserPrincipal.FindByIdentity(pc, name);
    if (user != null)
    {
        List<string> groups = new List<string>();
        PrincipalSearchResult<Principal> groups2 = user.GetAuthorizationGroups();
        //rest of code removed

我原以为通过指定用户名和密码,结果应该是相同的。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

这些是不同的,因为他们正在检索不同的数据集。 memberOf属性是动态构建的,它将为您提供用户是/直接/成员的组。另一方面,GetAuthorizationGroups()调用将为您提供用户可传递的所有安全组。它通过查看AD中的tokenGroups属性来实现此目的。