Мы пытаемся запустить набор административных задач на сервере через консоль веб-администрирования. Консоль работает с олицетворением в качестве текущего пользователя, вошедшего в систему, и только администраторам на локальном компьютере разрешено входить в систему. Сейчас она работает в большинстве случаев, но у нас возникают проблемы при работе под UAC.
Первая проблема - это блокировка: похоже, что администраторы не получают роль «BUILTIN \ Administrators», даже если они являются администратором локального ящика. Это может помешать им даже попасть в консоль администратора, поскольку мы используем нотацию web.config <allow roles="BUILTIN\Administrators">
для указания безопасности. Я подозреваю, что единственными решениями здесь являются либо запуск приложения ASP.NET от имени SYSTEM, либо предоставление большего количества пользователей и более детальная проверка разрешений в коде. Есть еще идеи? Есть ли способ внедрить запрос на повышение прав во встроенную проверку разрешений ASP.NET?
Другая проблема заключается в том, что мы хотим запустить некоторые команды, требующие доступа администратора. Пользователь, посещающий сайт, является администратором и правильно имитирует, но когда мы порождаем процесс, он завершается неудачей из-за отсутствия прав администратора. Четкий ответ заключается в повышении в течение этой команды. Существуют решения, которые позволят мне временно подняться, выдав себя за конкретное имя пользователя и пароль, но я бы предпочел не спрашивать у уже проверенного пользователя его пароль. Есть ли какие-нибудь хитрости для поднятия текущего пользователя?
(Я могу понять, почему команда ASP.NET может попытаться сделать это сложно, чтобы веб-страницы не могли воспользоваться невидимым преимуществом администратора, посещающего веб-сайт ... но, безусловно, должен быть какой-то способ программирования объявить, что вашему коду необходимы полные права администратора, и, соответственно, предупредить администратора IIS о своих намерениях?)
Существует ряд ответов для приложений Windows Forms, таких как:
Как повысить привилегии только при необходимости?
и File.Exists, возвращающих false из общей сетевой папки
но я надеюсь найти тот, который будет работать с ASP.NET ...
Спасибо
Стив