. NET Core - Novell LDAP / AD - Групповой поиск пользователя, к которому он принадлежит - Кто-нибудь заставил его работать? - PullRequest
0 голосов
/ 30 апреля 2020

Мой код, приведенный ниже, работает хорошо при поиске групп для пользователя, но проблема в том, что он возвращает только одну группу. Моя цель - получить все группы, к которым принадлежит пользователь. Как я могу избавиться от этой проблемы? Любая помощь будет высоко ценится.

LdapSearchResults lsc = (LdapSearchResults)ldapCon.Search(                    
    "DC=adl,DC=local",                   
    LdapConnection.ScopeSub,                    
    "(sAMAccountName=" + Username + ")",
    null,
    false
);

while (lsc.HasMore())
{                        
    try
    {
        var nextEntry = lsc.Next();                            
        nextEntry.GetAttributeSet();                           

        adGroups.Add(new ADUserSecurityGroupModel { 
            member = nextEntry.GetAttribute("memberOf").StringValue,
            distinguishedName = nextEntry.GetAttribute("sAMAccountName").StringValue 
        });
    }
    catch (LdapException ex)
    {
        Console.WriteLine("Error: " + ex.ToString());
        continue;
    }
}

1 Ответ

0 голосов
/ 01 мая 2020

После некоторого исследования и окончательного изучения я сам нашел решение проблемы, указанной здесь. Этого обходного пути достаточно для удовлетворения требования.

LdapSearchResults lsc = (LdapSearchResults)ldapCon.Search(
OU=Dashboards,DC=adl,DC=local",
LdapConnection.ScopeSub,
"(&(objectClass=group)(member:1.2.840.113556.1.4.1941:=CN=" + UserFullName + 
",OU=Company Name,DC=adl,DC=local))",
null,
false);                

while (lsc.HasMore())  
 {
  LdapEntry nextEntry = null;
  try
    {
      nextEntry = lsc.Next();
    }
  catch
    {                            
      continue;
    }
  nextEntry.GetAttributeSet();
  adGroups.Add(new ADUserSecurityGroupModel { cn = 
  nextEntry.GetAttribute("cn").StringValue });
 };
...