Получить все родительские группы AD, к которым принадлежит пользователь
Я хочу получить все группы Active Directory, членом которых является конкретный пользователь.
У меня есть сценарий, чтобы получить все непосредственные группы AD для пользователя (см. Коды ниже).
Однако как мне получить все родительские группы для каждой из ближайших групп AD, к которой принадлежит пользователь?
например, я непосредственно часть группы AD называется IT Team Managers
, Эта группа является членом родительской группы с именем IT Team National
и т.д. Как я могу получить эту родительскую группу из моего кода?
Большое спасибо заранее!
DirectorySearcher ouSearch = new DirectorySearcher(entry);
ouSearch.Filter = "(&(objectClass=User)(sAMAccountName=" + username + "))";
//ouSearch.PropertiesToLoad.Add("samAccountName");
ouSearch.PropertiesToLoad.Add("memberOf");
ouSearch.SearchScope = SearchScope.Subtree;
SearchResult allOUS = ouSearch.FindOne();
//foreach (string g in allOUS.Properties["memberOf"])
{
equalsIndex = g.IndexOf("=", 1);
commaIndex = g.IndexOf(",", 1);
if (equalsIndex == -1)
{
return null;
}
groupNames.Append(g.Substring((equalsIndex + 1), (commaIndex - equalsIndex) - 1));
groupNames.Append(",");
}
1 ответ
Если вы используете.NET 3.5 и выше, вы должны проверить System.DirectoryServices.AccountManagement
(S.DS.AM) пространство имен. Прочтите все об этом здесь:
- Управление принципами безопасности каталогов в.NET Framework 3.5
- Документы MSDN на System.DirectoryServices.AccountManagement
По сути, вы можете определить контекст домена и легко найти пользователей и / или группы в AD:
// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");
if(user != null)
{
// get the "authorization groups" the user is a member of - recursively
var authGroups = user.GetAuthorizationGroups();
// iterate over groups
foreach(Principal p in authGroups)
{
// do something with groups ....
}
}
Новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD!