Как проверить, является ли пользователь членом группы администраторов по имени пользователя / домену

Как я могу узнать, является ли пользователь членом группы администраторов, если единственной информацией, которую я имею, является имя пользователя (и домен, если это уместно)?

Я знаю, как получить эту информацию для текущего пользователя.
Однако в моем случае мне нужно получить эту информацию для пользователя, который еще не вошел в систему (я работаю над провайдером учетных данных). Поэтому я могу использовать только имя пользователя & домен.

Эта проблема актуальна только для компьютеров Windows.

Я работаю с C # / C ++.

Я знаю о C # WindowsPrincipal класс, как показано в: WindowsPrincipal

Мне также известно о Windows API IsUserAnAdmin ().
Однако я не могу использовать эти методы, потому что я имею дело с пользователем, который еще не вошел в систему (мой код выполняется до того, как пользователь фактически войдет в компьютер Windows)

-2

Решение

Если «почти всегда правильно» достаточно, вам нужно будет рекурсивно перечислить членство пользователя в группе, чтобы увидеть, действительно ли вы найдете группу «Администраторы». Это не тривиально, но это не слишком сложно. Там нет встроенной библиотеки, чтобы сделать это для вас.

Первый улов заключается в том, что предполагается, что у вас есть достаточный доступ к Active Directory для чтения всех соответствующих групп. По умолчанию локальная системная учетная запись сможет сделать это, но вам необходимо запретить системному администратору изменять разрешения безопасности для групп таким образом, чтобы компьютеры домена не могли читать членство в группах.

Кроме того, я не уверен, в каком контенте безопасности работают поставщики учетных данных, поэтому вам может потребоваться отдельная служба, выполняющая перечисление членства в домене от вашего имени.

Второй улов заключается в том, что сюда не будут входить специальные участники безопасности, такие как «Все», «ИНТЕРАКТИВНЫЕ» и т. Д., Но вы, вероятно, можете их игнорировать — для любого из них было бы крайне необычно входить в группу администраторов. Если вы считаете это необходимым, вы можете попытаться включить их или явно запретить системному администратору делать это.

Было бы наверное будьте более разумны, если необходимо перестройте архитектуру, чтобы вам не приходилось принимать это решение, пока вы не получили пароль пользователя.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector