Я пытаюсь выяснить, является ли пользователь косвенным членом определенной группы AD. Это делается из программы Delphi XE5, но для ясности я написал (и протестировал) свои примеры в PowerShell.
К сожалению, я получаю совершенно противоречивые результаты из моих запросов LDAP: один и тот же запрос иногда работает нормально, а иногда возвращает, что пользователь не является членом данной группы.
Вот пример (powershell) того, что я пытаюсь:
get-aduser -LDAPFilter "(memberof:1.2.840.113556.1.4.1941:=CN=egaa_app,OU=Applications,OU=access,OU=groups,OU=xxx,DC=xxx,DC=xxx,DC=xxx)" -SearchBase "CN=usr-sgr,OU=expert1,OU=experts,OU=remoteusers,OU=users,OU=exogit,OU=xxx,DC=xxx,DC=xxx,DC=xxx"
Приведенная выше команда должна возвращать объект пользователя usr-sgr
, если он прямо или косвенно является членом группы AD groupegaa_app,OU=Applications,OU=access,OU=groups,OU=xxx,DC=xxx,DC=xxx,DC=xxx
.
Тем не менее, когда я запускаю его один раз, я получаю пустой результат. Если я открою пользователя в AD MMC и каким-то образом обновлю его (в моем случае я изменил «основную группу» пользователя, а затем изменил ее обратно), тот же запрос успешно вернет объект пользователя.
Я также попытался использовать «обратный» запрос (который проверяет, содержит ли данная группа пользователя косвенно), и я стал свидетелем того же поведения.
Все это было сделано на рядовом сервере (Windows 2008 R2, с исправлениями) из того же сеанса входа в систему.