Продукт C # нашей компании использует System.DirectoryServices.AccountManagement
для запроса Active Directory для пользователей и групп. Мы используем следующий метод для получения принципала:
...
PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
return principalContext;
...
Мы получаем группы Active Directory, используя (например, groupName = "Devs"):
...
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(this.principalContext, groupName);
...
Все работает нормально с этой настройкой, когда мы запускаем ее в простой базе данных Active Directory с одним доменом.
У меня вопрос: что произойдет, если мы запустим этот код в большом лесу с более чем одной группой разработчиков? Может ли в лесу быть более одной группы безопасности «Разработчики»? Если да, то как это разрешит "Devs"? Надо ли переходить на использование метода:
public static GroupPrincipal FindByIdentity(
PrincipalContext context,
IdentityType identityType,
string identityValue
)
Я не могу смоделировать это в настоящее время (нехватка ресурсов и нехватка времени), и я много читал об этом. Я знаю, что есть локальные, глобальные и универсальные группы безопасности, разбросанные по деревьям доменов. Но деревья доменов в лесу имеют своего рода доверие между корнями, поэтому они не полностью игнорируют друг друга. Каков наихудший случай наличия дубликатов "Devs" в лесу и как приложение может с этим справиться?