Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用具有只读访问权限的第二个用户从LDAP检索用户组成员身份_C#_Active Directory_Ldap_Directorysearcher - Fatal编程技术网

C# 使用具有只读访问权限的第二个用户从LDAP检索用户组成员身份

C# 使用具有只读访问权限的第二个用户从LDAP检索用户组成员身份,c#,active-directory,ldap,directorysearcher,C#,Active Directory,Ldap,Directorysearcher,我有一个函数,需要以对AD LDAP具有只读访问权限的查询用户身份登录LDAP 我能够查询和查找用户,并列举除memberOf之外的大多数用户属性 只有当我以只读用户身份登录时才会发生这种情况。如果我以有问题的用户身份登录,则可以检索所有属性。有人知道我做错了什么吗 DirectorySearcher search = new DirectorySearcher(entry); search.Filter = "(sAMAccountName=" + loginName + ")"; sear

我有一个函数,需要以对AD LDAP具有只读访问权限的查询用户身份登录LDAP

我能够查询和查找用户,并列举除memberOf之外的大多数用户属性

只有当我以只读用户身份登录时才会发生这种情况。如果我以有问题的用户身份登录,则可以检索所有属性。有人知道我做错了什么吗

DirectorySearcher search = new DirectorySearcher(entry);

search.Filter = "(sAMAccountName=" + loginName + ")";
search.PropertiesToLoad.Add("CN");
search.PropertiesToLoad.Add("memberOf");
search.PropertiesToLoad.Add("SN");
search.PropertiesToLoad.Add("givenName");
if (_Attributes != null)
{
    foreach (string attr in _Attributes)
    {
        search.PropertiesToLoad.Add(attr);
    }
}

SearchResult result = search.FindOne();

if (result == null)
    return null;

string usersName = "";
if (result.Properties.Count > 0)
{
    if (result.Properties.Contains("CN"))
    {
        attributes.Add("CN", result.Properties["CN"].Cast<string>().ToList());
        usersName = result.Properties["CN"].Cast<string>().FirstOrDefault();
    }
    if (result.Properties.Contains("SN"))
    {
        attributes.Add("SN", result.Properties["SN"].Cast<string>().ToList());
    }
    if (result.Properties.Contains("givenName"))
    {
        attributes.Add("givenName",     result.Properties["givenName"].Cast<string>.ToList());
    }
    if (result.Properties.Contains("memberOf"))
        ad_MemberOf = result.Properties["memberOf"].Cast<string>().ToList();
    }
}
DirectorySearcher search=新的DirectorySearcher(条目);
search.Filter=“(sAMAccountName=“+loginName+”);
search.PropertiesToLoad.Add(“CN”);
search.PropertiesToLoad.Add(“memberOf”);
search.PropertiesToLoad.Add(“序号”);
search.PropertiesToLoad.Add(“givenName”);
如果(_属性!=null)
{
foreach(属性中的字符串属性)
{
search.PropertiesToLoad.Add(attr);
}
}
SearchResult=search.FindOne();
如果(结果==null)
返回null;
字符串usersName=“”;
如果(result.Properties.Count>0)
{
if(result.Properties.Contains(“CN”))
{
attributes.Add(“CN”,result.Properties[“CN”].Cast().ToList());
usersName=result.Properties[“CN”].Cast().FirstOrDefault();
}
if(result.Properties.Contains(“SN”))
{
attributes.Add(“SN”,result.Properties[“SN”].Cast().ToList());
}
if(result.Properties.Contains(“givenName”))
{
attributes.Add(“givenName”,result.Properties[“givenName”].Cast.ToList());
}
if(result.Properties.Contains(“memberOf”))
ad_MemberOf=result.Properties[“MemberOf”].Cast().ToList();
}
}

这是一项安全功能。如果未启用“Windows 2000之前版本兼容的访问权限”,则对该属性的访问将受到限制

如果在域的根级别正确启用此功能,则您应该可以访问所有用户帐户的所有“memberOf”属性,以及当您没有正确的访问权限时受到限制的其他一些属性

或者,您可以添加访问特定属性的权限,这些属性与作为“Windows 2000之前兼容的访问”机制的一部分提供的属性相对应

如果我阅读正确,则需要添加以下权限:

'List Contents', 'Read All Properties' and 'Read Permissions'