Я пытаюсь улучшить свой код, который определяет, является ли пользователь членом данной группы AD. По сути, это работает, за исключением случаев, когда член группы находится из другого (доверенного) домена, потому что он хранится как foreignsecurityprincipal.
Учитывая, что у меня есть действительный объект DirectoryEntry как для группы, которую я хочу протестировать, так и для учетной записи, которую я хочу проверить, мне нужна строка фильтра DirectorySearcher, которая позволит мне подтвердить, что учетная запись находится в этой группе, даже если учетная запись является принципом внешней безопасности.
(Пример кода VB.NET, демонстрирующий проблему)
Dim ContainerGroup as DirectoryEntry = ... Code to get Group
Dim UserToCheckFor as DirectoryEntry = ... Code to get User
DSearcher = New DirectorySearcher(ContainerGroup, "(WHATCANIPUTINHERE)", New String() {"member;Range=0-5000"}, SearchScope.Base)
DSearcher.AttributeScopeQuery = "member"
'If an object is found, the account was in the group
Return (DSearcher.FindOne() IsNot Nothing)