Я создал веб-службу WCF для возврата информации о пользователе и группе из Active Directory. Это работает для большинства групп и пользователей.
Я использую directoryEntry.Invoke("groups",null) для возврата групп, членом которых является указанный пользователь. Это возвращает группы MOST. Странно то, что я могу найти любую группу и перечислить ее членов, даже если это одна из отсутствующих групп, когда я использую запрос вызова для одного из ее членов.
Большинство групп, демонстрирующих такое поведение, поддерживают Exchange. Большинство проблемных учетных записей пользователей относятся к пользователям в федеративном домене, которые используют сервер Exchange в домене, который я запрашиваю. Я не пытаюсь запрашивать объекты в федеративном домене.
Мои теории на данный момент:
некоторые ограничения безопасности не позволяют перечислить все группы с помощью вызова(), хотя я могу запрашивать отсутствующие группы и перечислять их членов.
у вызова есть проблемы с некоторыми подмножествами групп. Возможно, задействованы универсальные, динамические или поддерживаемые Exchange свойства.
метод вызова не выбирает все группы, потому что «федеративные» учетные записи (созданные как часть их настройки учетной записи Exchange) каким-то образом отличаются от обычных учетных записей домена за пределами сопоставления sid обратно с их доменом входа.